title

listを串刺し

リストをlaply(lst,“[”)で配列にしてapply()。

さらにReduce(“+”, lst)で一発!

# install.packages("plyr")
library(plyr)

lst <- list()
mat<-matrix(1:9, 3)

for(i in 1:3)
  lst[[i]] <- mat

lst2 <- laply(lst, "[") # これでなんとか。

dimnames(lst2)<-list(c("x1", "x2", "x3"), # x軸の名前
                     c("y1", "y2", "y3"), # y軸の名前
                     c("z1", "z2", "z3")) # z軸の名前
lst
## [[1]]
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## 
## [[2]]
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## 
## [[3]]
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

apply(lst2, 2:3, sum)  # 串刺し合計
##    z1 z2 z3
## y1  3 12 21
## y2  6 15 24
## y3  9 18 27

以上が Reduce 一発!

Reduce("+", lst)
##      [,1] [,2] [,3]
## [1,]    3   12   21
## [2,]    6   15   24
## [3,]    9   18   27