【发布时间】:2015-04-15 16:49:43
【问题描述】:
我有以下过于简化的示例来演示我的问题。如何将列名分配给通过sapply 生成的单列矩阵?我知道这适用于for 循环,所以想知道我是否在这里遗漏了什么。感谢任何建议。
> names <- c("apple", "bear", "cat", "dog")
> x <- sapply(1:4, FUN=function(y){
mat <- matrix(rnorm(10, mean=0, sd=2))
colnames(mat) <- names[y]
print(colnames(mat))
return(mat)
})
> x
[,1] [,2] [,3] [,4]
[1,] 0.50453 -0.15463 2.3660 -0.1451
[2,] -0.18460 2.01499 -1.4656 0.5702
[3,] 0.41206 -0.94563 -0.5911 0.6568
[4,] -0.01510 1.88728 2.2698 0.2722
[5,] -0.67850 -0.48196 0.7322 -0.1656
[6,] 3.88306 0.25590 -0.9625 -0.5595
[7,] 0.09948 -0.48730 2.5696 -1.7280
[8,] 0.38895 -0.07124 -2.0728 2.4206
[9,] -1.23075 2.09420 1.3673 0.1967
[10,] 0.14671 0.08022 -2.3208 2.5696
我希望最终的矩阵如下所示:
> x
apple bear cat dog
[1,] 0.50453 -0.15463 2.3660 -0.1451
[2,] -0.18460 2.01499 -1.4656 0.5702
[3,] 0.41206 -0.94563 -0.5911 0.6568
[4,] -0.01510 1.88728 2.2698 0.2722
[5,] -0.67850 -0.48196 0.7322 -0.1656
[6,] 3.88306 0.25590 -0.9625 -0.5595
[7,] 0.09948 -0.48730 2.5696 -1.7280
[8,] 0.38895 -0.07124 -2.0728 2.4206
[9,] -1.23075 2.09420 1.3673 0.1967
[10,] 0.14671 0.08022 -2.3208 2.5696
【问题讨论】:
-
试试
do.call(cbind,lapply(1:4, FUN=function(y) {mat <- matrix(rnorm(10,0,2), dimnames=list(NULL, names[y]))}))