首页 > 解决方案 > 将列重命名为 Y X1 X2 X3 X4 .. XN

问题描述

我有一些数据,例如:

data(iris)

我想重命名列,即Species变量Y所有其他变量都是预测变量。

我目前所拥有的并没有给我想要的结果。

iris %>%
  select(Species, everything()) %>% # move the Y variable to the "front"
  rename(Y = 1) %>%
  rename_at(vars(2:ncol(.)), ~ paste("X", seq(2:ncol(.)), sep = ""))

预期的输出将是 colnames:

Y, X1, X2, X3, X4, X5... XN

标签: r

解决方案


什么地方出了错

您的代码中的错误是它假定第二个.(在匿名函数中)是tibble,而实际上它实际上是一个字符向量。因此,ncol(.)是不合适的,而应该是length(.)。此外,不需要seq()并且给定您请求的输出,它应该从 1 开始。最后,您会很好:

iris %>%
  select(Species, everything()) %>%
  rename(Y = 1) %>%
  rename_at(vars(2:ncol(.)), ~ paste("X", 1:length(.), sep = ""))

其他答案提供了表达此操作的替代方式。一个可能更清洁的版本是

iris %>%
  select(Species, everything()) %>%
  rename(Y = 1) %>%
  rename_with(~ str_c("X", seq_along(.)), -1)

推荐阅读