我正在处理表达式数据,并且有一个像这样的文件: data.png
我想知道如何删除值为0的行。如果在任何行中某些值为0,而其他值不为零,我想保留该行。我尝试使用:
> df[apply(df[,-1], 1, function(x) !all(x==0)),]
Error in df[, -1] : incorrect number of dimensions
有人可以帮助我了解这里的问题吗。 问候。
答案 0 :(得分:0)
对于带有带有标签的前导列的数据框,您可以执行以下操作。首先是此示例中使用的测试数据:
> test.df <- data.frame(genes=c("a","b","c","d","e","f","g"), col2=c(1,1,1,0,1,0,1), col3=c(4,3,6,0,1,NA,1), col4=c(9,8,7,0,5,NA,3))
> test.df
genes col2 col3 col4
1 a 1 4 9
2 b 1 3 8
3 c 1 6 7
4 d 0 0 0
5 e 1 1 5
6 f 0 NA NA
7 g 1 1 3
目标是删除第4行和第6行。对所有行执行apply
,而不对数据帧的第一列([,-1]
)进行行操作,然后删除任何零或NA:
> test.df[apply(test.df[,-1], 1, function(x) any(x != 0 || is.na(x))), ]
genes col2 col3 col4
1 a 1 4 9
2 b 1 3 8
3 c 1 6 7
5 e 1 1 5
7 g 1 1 3
这仅留下您感兴趣的行。如果您的资产净值是分开的,只需删除|| is.na(x)
部分。
(这与How to remove rows with all zeros without using rowSums in R?的第二个答案几乎相同,但列的不同之处在于,因此这里的答案是唯一的。]