如何计算R中列表中元素的平均点
我有矩阵A和列表B,如下所示: 矩阵A:如何计算R中列表中元素的平均点,r,R,我有矩阵A和列表B,如下所示: 矩阵A: [,1][,2] [1,] 1 1 [2,] 1 2 [3,] 2 1 [4,] 2 2 [5,] 10 1 [6,] 10 2 [7,] 11 1 [8,] 11 2 [9,] 5 5 [10,] 5 6 下面的列表B是基于矩阵A按行顺序的最小距离进行的分组。例如,列表[[1]]中的前四个点是矩阵A中的前四个点,即
[,1][,2]
[1,] 1 1
[2,] 1 2
[3,] 2 1
[4,] 2 2
[5,] 10 1
[6,] 10 2
[7,] 11 1
[8,] 11 2
[9,] 5 5
[10,] 5 6
下面的列表B是基于矩阵A按行顺序的最小距离进行的分组。例如,列表[[1]]中的前四个点是矩阵A中的前四个点,即(1,1)(1,2)(2,1)(2,2),它属于组1,依此类推
清单B:
[[1]]
[1] 1 1 1 1 3 2 3 2 1 1
[[2]]
[1] 3 3 3 3 3 3 1 2 3 3
[[3]]
[1] 1 1 2 2 3 3 3 3 2 2
如何根据分组分别计算第1组、第2组和第3组的平均分
如果只有一个向量,我就是这样做的:
meanPoints <- apply(MatrixA, 2, tapply, ListB, mean)
meanPoints我认为您可以使用lappy()
构建一个匿名函数来处理通过多个分组向量的迭代
# similar data bc I didn't want to type that
MatrixA <- matrix(data = 1:20, ncol = 2)
B <- c(rep(1:3, length.out = 10))
C <- c(rep(3:1, length.out = 10))
listB <- list(B, C)
# just wrapping your single vector solution
lapply(lists, function(x) {apply(MatrixA, 2, tapply, x, mean)})
[[1]]
[,1] [,2]
1 5.5 15.5
2 5.0 15.0
3 6.0 16.0
[[2]]
[,1] [,2]
1 6.0 16.0
2 5.0 15.0
3 5.5 15.5
#类似的数据bc我不想键入
矩阵