繁体   English   中英

如何删除R中所有列中具有相等值的行

[英]How to remove rows which have equal values in all columns in R

我有一个约4000行带有基因表达的数据集。

DF<-read.table("Sample_DF.txt",header=T)
head(DF, 4)


# Gene_Symbol     X.U1.     X.T1.     X.U2.     X.T2.
# 1        M1AP 0.0440509 0.1164950 0.0574035 0.0000000
# 2        DRD4 0.0440114 0.0387834 0.0512446 0.0497801
# 3        PCA3 0.0439278 0.0258183 0.0000000 0.0329761
# 4     FAM153B 0.0439073 0.0409539 0.0658340 0.3767400

tail(DF, 4)

#      Gene_Symbol X.U1. X.T1. X.U2. X.T2.
# 3992   LINC00353     0     0     0     0
# 3993   LINC00359     0     0     0     0
# 3994   LINC00366     0     0     0     0
# 3995   LINC00379     0     0     0     0

现在,我要删除所有列中包含0的所有行。 我已经在这里和其他网站中搜索了所有类似的查询,并使用了以下代码:

DF_filtered <- DF[!apply(DF[,c(2:5)],1,function(z) all(z==0)),]

要么

DF_filtered <- DF[apply(DF[,c(2:5)],1,function(z) all(z!=0)),]

要么

DF_filtered <- DF[apply(DF[,c(2:5)],1,function(z) any(z!=0)),].

但是,没有任何效果,也没有从原始数据集中删除任何行。 有人可以帮我解决这个问题。

如果列中没有负值,则可以根据满足rowSums等于0的条件的行索引过滤数据rowSums

假设您的数据称为df

df <- df[-which(rowSums(df[2:5])==0), ]

编辑 -包括@akrun建议的基于TRUE / FALSE向量而不是可能为空的索引向量的更安全的过滤方式:

df <- df[!rowSums(df[2:5])==0, ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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