我是R的新手,这可能是一个非常基本的问题。 我正在研究微阵列数据,其中数据帧中有数千个列。我试图在任何列中删除所有值小于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
set.seed(24)
DF <- as.data.frame(matrix(sample(-5:5, 5*20, replace = TRUE), 20, 5))