我有一个像x这样的数据框,其中列基因是一个因素.我想删除列基因什么都没有的所有行.所以在表XI中想要删除第4行.有没有办法为大型数据帧执行此操作?
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
Run Code Online (Sandbox Code Playgroud)
最后结果:
X
names values genes
1 A 0.2876113 EEF1A1
2 B 0.6681894 GAPDH
3 C 0.1375420 SLC35E2
5 E -0.4949905 RPS28
Run Code Online (Sandbox Code Playgroud)
谢谢你们!
Nic*_*bbe 26
从你的问题来看,空值是什么并不完全明显,但你应该能够采用下面的解决方案(这里我假设'空'值是空字符串):
toBeRemoved<-which(X$genes=="")
X<-X[-toBeRemoved,]
Run Code Online (Sandbox Code Playgroud)
Tom*_*mmy 10
@Nick Sabbe提供了一个很好的答案,但有一点需要注意:
-which(...)当只有少数要删除的元素时,使用是一种巧妙的技巧(有时)加速子集操作.
...但如果没有要删除的元素,它就会失败!
因此,如果X$genes 不包含任何空字符串,which则返回一个空整数向量.否定这仍然是一个空的向量.并且X [integer(0)]返回一个空的data.frame!
toBeRemoved <- which(X$genes=="")
if (length(toBeRemoved>0)) { # MUST check for 0-length
X<-X[-toBeRemoved,]
}
Run Code Online (Sandbox Code Playgroud)
或者,如果速度增益不重要,只需:
X<-X[X$genes!="",]
Run Code Online (Sandbox Code Playgroud)
或者,正如@nullglob指出的那样,
subset(X, genes != "")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17131 次 |
| 最近记录: |