Как изменить имя вложенного фрейма данных - PullRequest
1 голос
/ 08 мая 2019

Скажем, у нас есть вложенный фрейм данных, как показано ниже:

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]>

Если я хочу заменить первый элемент colnames каждого кадра данных на new_name, я попытался:


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 loop)? Заранее спасибо.

1 Ответ

1 голос
/ 08 мая 2019

Один из вариантов будет rename_at после цикла 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" 
...