我有以下过于简单的示例来演示我的问题。如何将列名称分配给通过 生成的单列矩阵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
Run Code Online (Sandbox Code Playgroud)
我希望最终的矩阵如下所示:
> 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
Run Code Online (Sandbox Code Playgroud)
用法是:sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)并且在参数USE.NAMES“逻辑;如果 TRUE 并且 X 是字符,则使用 X 作为结果的名称,除非它已经有名称。由于此参数遵循...其名称不能缩写。”
names <- c("apple", "bear", "cat", "dog")
x <- sapply(names, FUN = function(y) {
mat <- matrix(rnorm(10, mean = 0.0, sd = 2.0))
return(mat)
})
head(x)
apple bear cat dog
[1,] 2.8812757 0.4668899 -1.7573046 1.2256461
[2,] 1.6603629 -1.6834094 -0.9703212 -2.1785622
[3,] 0.2418369 -1.8863158 -0.3332608 -0.6614945
[4,] 4.2053458 -1.3841535 -1.3637611 1.6450790
[5,] -1.5078531 -1.7479366 -2.5106405 0.4317063
[6,] 1.8203799 2.0683913 -0.8045522 1.6639686
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |