我得到了一个有基因表达数据的数据框
我试图提取所有列中任何列都有值的数据(数据已经是log2值)> = 2但似乎无法到达那里。我的数据是:
A B C D
Gene1 1 2 3 1
Gene2 2 1 1 4
Gene3 1 1 0 1
Gene4 1 2 0 1
我只想保留gene1
,gene2
和gene4
而不说明所有列(因为这只是一个玩具示例)。
答案 0 :(得分:1)
您可以对从rowSums
派生的逻辑矩阵使用df >=2
并使用双重否定(!
)来获取行的索引到子集。
df[!!rowSums(df >=2),]
# A B C D
#Gene1 1 2 3 1
#Gene2 2 1 1 4
#Gene4 1 2 0 1
或使用反向条件df <2
获取逻辑矩阵,使用rowSums
,然后检查这是否小于ncol(df)
df[rowSums(df <2) < ncol(df),]
# A B C D
#Gene1 1 2 3 1
#Gene2 2 1 1 4
#Gene4 1 2 0 1
或者
df[apply(t(df>=2),2, any), ]
df <- structure(list(A = c(1L, 2L, 1L, 1L), B = c(2L, 1L, 1L, 2L),
C = c(3L, 1L, 0L, 0L), D = c(1L, 4L, 1L, 1L)), .Names = c("A",
"B", "C", "D"), class = "data.frame", row.names = c("Gene1",
"Gene2", "Gene3", "Gene4"))