【问题标题】:renaming column names with variable用变量重命名列名
【发布时间】:2017-10-23 21:57:45
【问题描述】:

我想用dplyr 中的变量来重命名一个特定的列。

newName = paste0('nameY', 2017)

我尝试的是

iris %>% 
    rename(newName = Petal.Length) %>%
    head(2)

这给了

Sepal.Length Sepal.Width newName Petal.Width Species
         5.1         3.5     1.4         0.2  setosa
         4.9         3.0     1.4         0.2  setosa

我收到的是newName 而不是nameY2017,这很正常。所以我尝试了

iris %>% 
    rename_(eval(newName) = 'Petal.Length')

但是我得到了一个错误。

错误:“iris %>% rename_(eval(newName) ="

中出现意外的 '='

dplyr 有合适的方法吗? 我知道我可以做类似的事情

names(iris)[3] <- newName

但这不是dplyr 解决方案。

【问题讨论】:

  • 这里已经回答了这个问题:stackoverflow.com/questions/36520813/…
  • 你试过names(iris)[which(names(iris) %in% "newName")] &lt;- paste0('nameY', 2017)。不是dplyr,但它应该可以工作。

标签: r dplyr


【解决方案1】:

dplyr 'rename' standard evaluation function not working as expected?dplyr 'rename' standard evaluation function not working as expected? 的信用和更多信息

您的代码:

newName = paste0('nameY', 2017)
iris %>% 
  rename(newName = Petal.Length) %>%
  head(2)

解决方案:

iris %>% 
  rename_(.dots = setNames("Petal.Length",newName)) %>%
  head(2)

输出:

  Sepal.Length Sepal.Width nameY2017 Petal.Width Species
1          5.1         3.5       1.4         0.2  setosa
2          4.9         3.0       1.4         0.2  setosa

【讨论】:

    猜你喜欢
    • 2020-01-30
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2018-01-10
    相关资源
    最近更新 更多