2014-02-24 74 views
1

我有一個名爲PSIBL_out的data.frame。SUM上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」中。

​​

我碰到下面的錯誤,我相信這是對SUM函數:

Error in FUN(X[[1L]], ...) : 
    only defined on a data frame with all numeric variables 

想法?

+1

我認爲你的問題是你使用'grep'而不是'grepl'。一定要仔細閱讀這些文檔,看看每個回報。 – joran

+1

...你試圖總結一個數據框,這是沒有意義的。要計數,您可以將總和應用於'grepl'的輸出。 – joran

+0

是的,你是對的,我用錯誤的方式總結我 – CLM

回答

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列中。

+0

感謝編輯提示,我一直在尋找像這樣,但直到你指出爲止還沒有看到它。是的,我只想計算在staxid列上應用grep返回的那些行。 – CLM

+0

我按照您的建議測試了代碼,並且我工作了。謝謝! – CLM