R 列表的计算

R 列表的计算,r,R,我有一个矩阵列表,例如L=list(M1、M2、M3、M4、M5、M6、M7、M8、M9、M10、M11、M12) 我想用这个计算 M=减少(+,L)/rowSums(sapply(L,rowSums)) 对于每3个矩阵,而不是整个列表;详情如下: 对于(M1,M2,M3),(M4,M5,M6),(M7,M8,M9),然后是(M10,M11,M12) 我在第一组就试过了 M=Reduce(+,L[1:3]/rowSums(sapply(L[1:3],rowSums)) 它工作,但我想自动化它,以

我有一个矩阵列表,例如
L=list(M1、M2、M3、M4、M5、M6、M7、M8、M9、M10、M11、M12)

我想用这个计算

M=减少(
+
,L)/rowSums(sapply(L,rowSums))

对于每3个矩阵,而不是整个列表;详情如下:

对于(M1,M2,M3),(M4,M5,M6),(M7,M8,M9),然后是(M10,M11,M12)

我在第一组就试过了

M=Reduce(
+
,L[1:3]/rowSums(sapply(L[1:3],rowSums))

它工作,但我想自动化它,以获得4个结果在同一时间在一个新的列表


如果我们需要在每3个元素上执行此操作,请使用
rep
创建分组变量,或使用
gl
拆分
列表,然后应用此函数,我们将非常感谢您的帮助

fRed <- function(x) Reduce(`+`, x)/rowSums(sapply(x, rowSums))
lapply(split(lst, as.integer(gl(length(lst), 3, length(lst)))), fRed)
弗雷德
lst <- list(M1 = matrix(c(1,4,2,5), 2, 2), M2 = matrix(c(2,6,3,7), 2, 2),
   M3 =  matrix(c(1,4,2,5), 2, 2), M4 = matrix(c(1,4,2,5), 2, 2),
   M5 = matrix(c(2,6,3,7), 2, 2), M6 =  matrix(c(1,4,2,5), 2, 2))