重命名数据框列表中的所有列

May*_*ans 4 r list purrr

我有一个数据框列表

vars <- c("Col_1", "Col_2", "Col_3")

list_df <- list(
  tibble(
    a = 1,
    b = 2,
    c = 3
  ),
  tibble (
    d = 1,
    e = 2,
    f = 3
  )
)
Run Code Online (Sandbox Code Playgroud)

我想使用 重命名列,vars但我想我在这里遗漏了一些东西。

map(list_df, ~rename_all(.x, vars))
Run Code Online (Sandbox Code Playgroud)

结果应该是:

list(
  tibble(
    Col_1 = 1,
    Col_2 = 2,
    Col_3 = 3
  ),
  tibble (
    Col_1 = 1,
    Col_2 = 2,
    Col_3 = 3
  )
)
Run Code Online (Sandbox Code Playgroud)

无论初始列名如何,我都希望它可以工作(并且所有数据框始终只有三列。这可能吗?

akr*_*run 5

我们需要~内部rename_all

library(purrr)
library(dplyr)
map(list_df, ~rename_all(.x, ~ vars))
#[[1]]
# A tibble: 1 x 3
#  Col_1 Col_2 Col_3
#  <dbl> <dbl> <dbl>
#1     1     2     3

#[[2]]
# A tibble: 1 x 3
#  Col_1 Col_2 Col_3
#  <dbl> <dbl> <dbl>
#1     1     2     3
Run Code Online (Sandbox Code Playgroud)

或与 set_names/setNames

map(list_df, set_names, vars)
map(list_df, setNames, vars)
Run Code Online (Sandbox Code Playgroud)