如何更改嵌套数据框的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
为什么代码没有按预期运行?实现此目的的正确方法是什么(我更喜欢使用 pipe
和 map
方法而不是 for
循环方法的方法)?
提前致谢。
一个选项是 rename_at
在 data.frames 的 list
和 map
循环之后
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"
假设我们有一个如下所示的嵌套数据框:
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
为什么代码没有按预期运行?实现此目的的正确方法是什么(我更喜欢使用 pipe
和 map
方法而不是 for
循环方法的方法)?
提前致谢。
一个选项是 rename_at
在 data.frames 的 list
和 map
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"