我是R的新手,所以我请求你的帮助。说我有以下矩阵。
mat <- matrix(c(2,4,2,8, 1,4,11,9), 4)
dimnames(mat)[[2]] <- c("x", "y")
dimnames(mat)[[1]] <- c("a", "b", "c", "d")
mat
x y
a 2 1
b 4 4
c 2 11
d 8 9
我想基本上过滤矩阵,以便新矩阵只包含平均值为5或更高的行。因此,在“mat”中,行“a”和“b”将不符合此标准并被删除,新矩阵将如下所示。任何帮助将不胜感激!
mat
x y
c 2 11
d 8 9
答案 0 :(得分:4)
mat[ rowMeans(mat) < 5 , ] # rowMeans is much faster than the apply method
答案 1 :(得分:2)
对于原始问题,您要选择最小值为&gt; = 5的行。apply
min
将找到每行的最小值,用于选择。请注意,使用的矩阵不再匹配问题。
> mat1[apply(mat1, 1, min) >= 5,,drop=FALSE]
x y
c 7 8
对于已编辑的问题,请使用平均值:
> mat[apply(mat, 1, mean) >= 5,,drop=FALSE]
x y
c 2 11
d 8 9