【发布时间】:2016-12-09 19:34:06
【问题描述】:
我认为这很容易,但它不起作用。我正在尝试按照此示例更改我创建的矩阵列表中每个矩阵的列名:
Assign column names to list of dataframes
当我运行下面的代码时,我得到了一个非常奇怪的返回,看起来我只是设置了每个矩阵中每个元素的名称,而不仅仅是列名。
#create a list of matrices containing random numbers
randoms<-lapply(1:1000, function(x) matrix(rnorm(1440), ncol=10))
trial<-lapply(randoms, setNames , nm = letters[1:10])
head(trial[[1]])
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0.89032453 1.02459736 0.7141343 -0.47405630 -2.0719943 -1.5087669
[2,] -0.74866047 0.44086093 -1.7540066 -2.04227094 -0.4875453 1.4207707
[3,] -0.04565454 -1.52336294 -0.1941370 -1.36252338 1.7338307 -1.3536725
[4,] 0.13242099 -0.09157545 -0.6156536 -1.34546174 -0.3279853 0.9663668
[5,] 2.09173141 0.41592339 0.7422889 -0.05991624 0.5319697 0.6413341
[6,] -0.32129540 2.11206231 0.1722047 -0.54404820 1.2685971 -0.0784607
[,7] [,8] [,9] [,10]
[1,] -0.4849624 -1.2590439 -1.5066718 -0.6758746
[2,] -2.5010320 -2.3469163 0.5221117 0.9186142
[3,] -1.3763468 -0.5551194 -0.2304872 -1.6087508
[4,] -2.0282231 -0.1949064 0.9329241 1.0196325
[5,] 1.6429999 1.8176161 -0.6549447 -1.8833887
[6,] 1.0044023 1.5895154 0.3660308 -0.1883819
head(attr(trial[[1]], "names"))
[1] "a" "b" "c" "d" "e" "f"
【问题讨论】:
-
这是一种方法:
trial<-lapply(randoms, function(x) {colnames(x) <- letters[1:10]; x})。矩阵有行名和列名,但没有名称属性。这就是setNames不起作用的原因。 -
行得通,谢谢!
-
能否请您标记您的问题已解决。
-
如果解决方案在 cmets 中,我如何将其标记为已解决? @Imo 在上面提供了正确答案。
标签: r