【问题标题】:R: change column names of every matrix in a listR:更改列表中每个矩阵的列名
【发布时间】: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&lt;-lapply(randoms, function(x) {colnames(x) &lt;- letters[1:10]; x})。矩阵有行名和列名,但没有名称属性。这就是setNames 不起作用的原因。
  • 行得通,谢谢!
  • 能否请您标记您的问题已解决。
  • 如果解决方案在 cmets 中,我如何将其标记为已解决? @Imo 在上面提供了正确答案。

标签: r


【解决方案1】:

我们可以使用for 循环

 for(i in seq_along(randoms)) {
        colnames(randoms[[i]]) <- letters[1:10]
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多