为一系列矩阵实现rbind

时间:2014-08-08 00:46:26

标签: r

我想绑定一些作为函数结果的矩阵。对于以下示例,我想为Myfn(m)

绑定m<-(1:3)的结果
Myfn <- function(m){
  matrix <- m * matrix(1:6, nrow=2)
  return(matrix)
}

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
[3,]    2    6   10
[4,]    4    8   12
[5,]    3    9   15
[6,]    6   12   18

知道如何在R中实现它吗?

2 个答案:

答案 0 :(得分:5)

> do.call(rbind, lapply(1:3, Myfn))
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
[3,]    2    6   10
[4,]    4    8   12
[5,]    3    9   15
[6,]    6   12   18

简短说明:rbind(x, y, z)相当于do.call(rbind, list(x, y, z)),其中do.call()的第二个参数是列表包含您通常会传递给的函数参数rbind()lapply()会将您的函数应用于1:3,并将子矩阵返回到列表中。

答案 1 :(得分:2)

你也可以这样做:

 Reduce(rbind, lapply(1:3, Myfn)

如果您的矩阵大小不同

library(plyr)
rbind.fill.matrix(lapply(1:3,Myfn))