[英]How to calculate mean points for elements in a List in 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
下面的ListB是基於最小距離進行的分組,該最小距離是基於矩陣A的行的順序。例如,List [[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)
但是,如何執行循環以獲取R中列表[[1]] [[2]] [[3]]的均值?
我認為您可以使用lapply()
來建立匿名函數來處理通過多個分組向量進行的迭代。
# 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
那是您要找的東西嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.