我想绑定一些作为函数结果的矩阵。对于以下示例,我想为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中实现它吗?
答案 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))