【问题标题】:How to rename columns starting from the 2nd one?如何重命名从第二个开始的列?
【发布时间】:2015-01-02 23:59:05
【问题描述】:

有一个数据框 training 有 20 列。第一列称为“目标”。我想将 2:20 列的名称更改如下 X1,X2,X3,...

如果我运行这个命令,那么所有的列都会被重命名,包括第一个(目标)。

names(training) <- paste("X", 1:ncol(training), sep="");  

如何重命名从第二个开始的列?

【问题讨论】:

  • 好吧,当然,如果你全选它们,它们都会被重命名。为什么不直接选择您感兴趣的 [] 提取?
  • 或许names(training)[-1] &lt;- paste0('X', 1:(ncol(training)-1))
  • @Ananda Mahto:我试过训练[,-1]。但是,正如我所见,正确的方法是使用 (training)-1

标签: r dataframe


【解决方案1】:
colnames(training)[2:20]<-paste("X", 1:19, sep="")

【讨论】:

  • 以上非常好。请注意,colnames 等效于names,而paste0paste 更有效。因此,您可以将代码稍微修剪为names(training)[2:20] &lt;- paste0("X", 1:19)
  • @KFB,colnames 不等同于names——恰好是data.frames 的情况。
  • @KFB,您能否详细说明为什么paste0paste 更高效?我有疑问。
  • @AnandaMahto,是的,data.frames 是一样的。来自?colnamesFor a data frame, rownames and colnames eventually call row.names and names respectively, but the latter are preferred. 这里的问题是data.frame。
  • @flodel,来自?paste0paste0(..., collapse) is equivalent to paste(..., sep = "", collapse), slightly more efficiently.
猜你喜欢
  • 2018-11-16
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 2023-03-25
  • 2018-05-12
  • 1970-01-01
相关资源
最近更新 更多