0

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

2 回答 2

4
mat[ rowMeans(mat) < 5 , ]   # rowMeans is much faster than the apply method
于 2012-12-17T00:43:10.573 回答
2

对于原始问题,您要选择最小值 >= 5 的行。 applywithmin将找到每行的最小值,以用于选择。请注意,使用的矩阵不再与问题匹配。

> 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
于 2012-12-16T21:24:44.617 回答