如何更改嵌套数据框的colname

How to change colname of nested dataframe

假设我们有一个如下所示的嵌套数据框:

library(tidyverse)

  df <- iris %>%
      group_by(Species) %>%
      nest()
  df

# A tibble: 3 x 2
  Species    data             
  <fct>      <list>           
1 setosa     <tibble [50 × 4]>
2 versicolor <tibble [50 × 4]>
3 virginica  <tibble [50 × 4]>

如果我想用 new_name 替换每个数据帧的 colnames 的第一个元素,我试过:


df_new <- iris %>%
          group_by(Species) %>%
          nest() %>%
          map(data, ~assign(colnames(.x)[[1]], "new_name"))

Error: Can't convert a `data.frame` object to function
Call `rlang::last_error()` to see a backtrace

为什么代码没有按预期运行?实现此目的的正确方法是什么(我更喜欢使用 pipemap 方法而不是 for 循环方法的方法)? 提前致谢。

一个选项是 rename_at 在 data.frames 的 listmap

循环之后
library(dplyr)
df_new <- df %>% 
            mutate(data = map(data, ~.x %>% 
                             rename_at(1, ~ "new_name")))
names(df_new$data[[1]])
#[1] "new_name"     "Sepal.Width"  "Petal.Length" "Petal.Width"