需要帮助根据R中的标准过滤矩阵

时间:2012-12-16 21:22:12

标签: r matrix

我是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

2 个答案:

答案 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