簡體   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