繁体   English   中英

使用因子“”删除 dataframe 中的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM