data.frame上的和返回错误

data.frame上的和返回错误,r,R,我有一个名为PSIBL_out的data.frame sallgi stext2 staxid stext3 1 hgd;te; hgh gfg;dgj;jhh AJJC 2 hf jhd hjhj hgfd 3 oui dhk kjll jhjs 我想查找列“staxids”中有多个值的所有行,用“;”分隔。

我有一个名为PSIBL_out的data.frame

   sallgi     stext2    staxid           stext3  
1   hgd;te;     hgh     gfg;dgj;jhh       AJJC
2   hf          jhd     hjhj              hgfd
3   oui         dhk     kjll              jhjs
我想查找列“staxids”中有多个值的所有行,用“;”分隔。对于每一行,我想查看“sallgi”列,计算“;”出现的次数,并将数字放在“a”中


想法?

你的问题仍然有点不清楚(顺便说一句,你应该通过编辑来澄清你的问题,而不是留下评论!)

但我猜你想要这样的东西:

library(stringr)
> dat <- read.table(text = "sallgi     stext2    staxid           stext3  
+ 1   hgd;te;     hgh     gfg;dgj;jhh       AJJC
+ 2   hf          jhd     hjhj              hgfd
+ 3   oui         dhk     kjll              jhjs",header = TRUE,sep = "")
> str_count(dat$sallgi[grepl(";",dat$staxid)],";")
[1] 2
库(stringr)
>dat str_计数(dat$sallgi[grepl(“;”,dat$staxid)],“;”)
[1] 2

但是,从您的问题中不清楚您是要为原始数据帧中的每一行计数,还是只为那些带有
的行计数出现在
statxid
列中。

我认为您的问题在于您使用的是
grep
而不是
grepl
。一定要仔细阅读上面的文档,看看每个文档都返回了什么……而你试图对数据帧求和,这毫无意义。为了计数,您将sum应用于
grepl
的输出。是的,您是对的,我以错误的方式应用sum I。我意识到的另一个错误是我如何使用grepI。我正在尝试以下操作:for(I in-PSIBl_out[grep(;),PSIBl_out[,“statxids”],){谢谢你提供的编辑技巧,我一直在寻找类似的东西,但直到你指出,我才看到。是的,我只想计算那些在staxid列上应用grep返回的行
 Error in FUN(X[[1L]], ...) : 
  only defined on a data frame with all numeric variables
library(stringr)
> dat <- read.table(text = "sallgi     stext2    staxid           stext3  
+ 1   hgd;te;     hgh     gfg;dgj;jhh       AJJC
+ 2   hf          jhd     hjhj              hgfd
+ 3   oui         dhk     kjll              jhjs",header = TRUE,sep = "")
> str_count(dat$sallgi[grepl(";",dat$staxid)],";")
[1] 2