如何根据它包含的数据删除行?

zfz*_*zfz 0 for-loop r bioinformatics delete-row

我有一张桌子,开头就在这里:

>df
TargetID    SM_H1455_121005_4   SM_H1456_121005_1   SM_H1457_121005_7   SM_H1461_121005_2   SM_H1462_121005_8   SM_H1463_121005_1   SM_K1566_121005_6   

ENSG00000002549.7   2286    2468    2498    1696    2044    11536   4100    5460        
ENSG00000002587.5   10  0   6   2   0   2   34  
ENSG00000002726.15  8   14  0   2   16  2   4   
ENSG00000002745.8   6   2   2   0   0   4   6   
Run Code Online (Sandbox Code Playgroud)

我想浏览每一行并删除包含0的每一行.这是我的代码:

for(i in 2:length(df)) {
df2 <- df[df[,i]!=0,]
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码不会删除其中包含0的所有行.它删除了一些行,但我不确定为什么,我不认为这是正确的.有什么建议?

Jak*_*ead 6

R> foo = as.data.frame(matrix(rbinom(25, 5, .25), 5, 5))
R> foo
  V1 V2 V3 V4 V5
1  1  3  2  3  0
2  1  1  2  2  1
3  4  2  1  1  2
4  0  0  1  1  1
5  1  2  1  1  2
R> foo[!rowSums(foo == 0),] ## or just foo[!rowSums(!foo),]
  V1 V2 V3 V4 V5
2  1  1  2  2  1
3  4  2  1  1  2
5  1  2  1  1  2
Run Code Online (Sandbox Code Playgroud)