我有一个名为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”中。
The code I wrote is the following:
for(i in PSIBl_out[grep(";", PSIBl_out[,"staxids"]),])
{
a <- sum(PSIBl_out[grep(";", PSIBl_out[,"sallgi"]),])
}
我收到以下错误,我认为这是SUM函数:
Error in FUN(X[[1L]], ...) :
only defined on a data frame with all numeric variables
想法?
答案 0 :(得分:1)
您的问题仍然有点不清楚(顺便说一句,您应该通过编辑来澄清您的问题,而不是留下评论!)。
但我猜你想要这样的东西:
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
但是,您的问题并不清楚您是想要对原始数据框中的每一行进行计数,还是仅针对;
列中存在staxid
的行。