[英]Remove rows in dataframe with factor “”
我有一个 dataframe 像 x 列基因是一个因素。 我想删除列基因没有的所有行。 所以在表 XI 中要删除第 4 行。对于大型 dataframe 有没有办法做到这一点?
X
names values genes
1 A 0.2876113 EEF1A1
2 B 0.6681894 GAPDH
3 C 0.1375420 SLC35E2
4 D -1.9063386
5 E -0.4949905 RPS28
最终结果:
X
names values genes
1 A 0.2876113 EEF1A1
2 B 0.6681894 GAPDH
3 C 0.1375420 SLC35E2
5 E -0.4949905 RPS28
谢谢你们!
从您的问题中,空值是什么并不完全清楚,但您应该能够采用下面的解决方案(这里我假设“空”值是空字符串):
toBeRemoved<-which(X$genes=="")
X<-X[-toBeRemoved,]
@Nick Sabbe 提供了一个很好的答案,但它有一个警告:
当只有几个元素要删除时,使用-which(...)
是(有时)加速子集操作的一个巧妙技巧。
...但是如果没有要删除的元素,它就会失败!
因此,如果X$genes
不包含任何空字符串, which
返回一个空的 integer 向量。 否定它仍然是一个空向量。 X[integer(0)] 返回一个空的data.frame!
toBeRemoved <- which(X$genes=="")
if (length(toBeRemoved>0)) { # MUST check for 0-length
X<-X[-toBeRemoved,]
}
或者,如果速度增益不重要,只需:
X<-X[X$genes!="",]
或者,正如@nullglob 指出的那样,
subset(X, genes != "")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.