data.frame上的SUM返回错误

时间:2014-02-24 21:43:35

标签: 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”列中有多个值的所有行,用“;”分隔。对于每个这样的行,我想查看“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

想法?

1 个答案:

答案 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的行。