如何在R数据帧的任何列中删除存在值小于2的行?

时间:2017-08-05 10:04:09

标签: r

我是R的新手,这可能是一个非常基本的问题。 我正在研究微阵列数据,其中数据帧中有数千个列。我试图在任何列中删除所有值小于2且大于-2的行。因此,我无法指定列名。

如何删除任何列中任何值小于2且大于-2的行。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

indices <- which(apply(DF, 1, function(row) any(abs(row) < 2)))
DF[-indices,]

首先,您要查找要删除的相关行 您可以通过遍历每一行(apply并将其作为第二个参数)来实现该目的,然后检查它是否具有介于-2和2之间的任何值(不包括它们)。换句话说,绝对值小于2.(您可以询问行中的任何绝对值是否小于2,或者最小绝对值是否为。)
这将给你一个布尔矢量。将which函数应用于它将生成索引向量,其值为TRUE 现在您只需要从data.frame中删除这些行(我称之为DF)。

答案 1 :(得分:0)

We can use rowSums to create a logical index of values less than 2

DF[!rowSums((DF < 2) & (DF > -2)),]
#   V1 V2 V3 V4 V5
#6   5  2 -5 -2 -2
#14  2 -4  2  5 -4

data

set.seed(24)
DF <- as.data.frame(matrix(sample(-5:5, 5*20, replace = TRUE), 20, 5))