【问题标题】:How to rename data frame variables as x1, x2, ... in R?如何在 R 中将数据框变量重命名为 x1、x2、...?
【发布时间】:2015-09-28 06:33:04
【问题描述】:

我知道有一个简单的解决方案,但我不断收到错误消息。鉴于此示例数据框:

y <- c(1,2,3)
a <- c(2,4,6)
b <- c(4,8,12)
c <- c(8,16,24)
z <- as.data.frame(cbind(y,a,b,c))
z
  y a  b  c
1 1 2  4  8
2 2 4  8 16
3 3 6 12 24

我想要一段自动将第 2 列重命名为 x1、第 3 列重命名为 x2、第 3 列重命名为 x3 的代码。我试过了:

for (i in 2:4){ x=colnames(z[i]); rename(z, c(x=paste("x",i,sep=""))) }

apply(z[,2:4], 2, function(x) rename(z, c(x=paste("x",i,sep="")))  )

但没有成功。非常感谢任何帮助!

【问题讨论】:

    标签: r for-loop rename


    【解决方案1】:

    你不需要循环

     names(z)[-1] <- paste0('x', 1:(ncol(z)-1))
    

    编辑:添加了@Pierre Lafortune 的建议

    【讨论】:

    • 太棒了,谢谢!我对 names() 函数很熟悉,但是“[-1]”部分是做什么的?
    • 我有 names(z)[-1] &lt;- paste0('x', 1:(ncol(z)-1)) 以防万一真实数据集更大。但这几乎是一回事。
    • @RobertF names(z) 将给出从第一个到最后一个的所有列名。通过names(z)[-1],我们忽略了第一列。
    • @PierreLafortune 感谢 cmets。你是对的。
    • 作为后续,还可以选择一系列变量名进行重命名——例如在上面的z数据框中,我们可以将“a”重命名为“x1”,将“b”重命名为“ x2" 并忽略 "y" 和 "c":names(z)[-1][-3] &lt;- paste0('x', 1:2).
    猜你喜欢
    • 2020-01-28
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2012-05-26
    相关资源
    最近更新 更多