1

リスト内のすべての行列をまとめたい。これが私がやろうとしていることの例です:

## sets up the problem
m1 <- matrix(0,nrow=9,ncol=4)
row.pres <- lapply(1:4,function(x) seq(x,x+2))
m1.l <- lapply(1:4,function(y) {m1[row.pres[[y]],y] <- 1
                        return(m1)}
       )

m1.lのすべての要素を合計して、それぞれと同じ次元の単一の行列を作成したいと考えています。これが私の解決策です:

test <- lapply(1:4,function(x) paste("m1.l[[",x,"]]",sep=''))
add.all <- paste(test,collapse="+")
eval(parse(text=add.all))

しかし、もっと良い方法があるはずです!おそらく何かを介してdo.call

4

1 に答える 1

4
 > Reduce("+", m1.l)
      [,1] [,2] [,3] [,4]
 [1,]    1    0    0    0
 [2,]    1    1    0    0
 [3,]    1    1    1    0
 [4,]    0    1    1    1
 [5,]    0    0    1    1
 [6,]    0    0    0    1
 [7,]    0    0    0    0
 [8,]    0    0    0    0
 [9,]    0    0    0    0

これにより、最初の 2 つが加算され、結果が取得されて 3 番目の行列が加算されます。次に、リスト全体を処理するまで、その結果を 4 番目のマトリックスなどに追加します。

于 2012-12-11T19:22:40.503 に答える