如何在 R 中的同一数据集下使用 rename() 和 rename_with()?

How to use rename() and rename_with() under the same dataset in R?

A data.frame: 6 × 3
Id  ActivityDay Calories
<dbl>   <chr>   <int>
1   1503960366  4/12/2016   1985
2   1503960366  4/13/2016   1797
3   1503960366  4/14/2016   1776
4   1503960366  4/15/2016   1745
5   1503960366  4/16/2016   1863
6   1503960366  4/17/2016   1728

以上是数据集的 head() 预览,我试图在转换时将列名 ActivityDay 转换为 ActivityDate所有的列名都变成小写,下面是我的代码:

# calories
calories %>%
    rename_with(calories, tolower) %>%
    rename(activitydate=activityday)
Error: Can't rename columns that don't exist.
✖ Column `ActivityDay` doesn't exist.

请大家帮忙指出代码哪里不对,谢谢!

您不需要两次调用 calories(您的数据框名称):

calories %>% 
  rename_with(tolower) %>% 
  rename(activitydate = activityday)

数据

calories <- structure(list(Id = c(1503960366L, 1503960366L, 1503960366L, 
1503960366L, 1503960366L, 1503960366L), ActivityDay = c("4/12/2016", 
"4/13/2016", "4/14/2016", "4/15/2016", "4/16/2016", "4/17/2016"
), Calories = c(1985L, 1797L, 1776L, 1745L, 1863L, 1728L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6"))

这是另一种方法:

library(dplyr)
library(stringr)

calories %>% 
  rename_with(., ~tolower(str_replace(., "activityday", "activitydate"))))
          id activitydate calories
1 1503960366    4/12/2016     1985
2 1503960366    4/13/2016     1797
3 1503960366    4/14/2016     1776
4 1503960366    4/15/2016     1745
5 1503960366    4/16/2016     1863
6 1503960366    4/17/2016     1728