Отмена кавычек не может найти переменную в mutate и map2 при переименовании столбца данных во вложенной таблице R - PullRequest
2 голосов
/ 09 марта 2019

Хорошо, я просто пытаюсь переименовать столбец внутри вложенной таблицы на основе столбца идентификатора / символа:

MWE:

library(magrittr)
iris %>% 
  tibble::as_tibble() %>%
  tidyr::nest(-Species) %>%
  dplyr::mutate(
    Species = as.character(Species),
    data = purrr::map2(data, Species,
                       ~dplyr::rename(.x, !!.y := Sepal.Width)))

но это возвращает ошибку:

Error in quos(..., .named = TRUE) : object '.y' not found

Я пытался использовать ensym из rlang и все виды комбинаций !! и :=, но безуспешно. То есть первый столбец в столбце данных должен иметь столбец Sepal.Width, переименованный в setosa, второй - в лишний, а для последнего столбца Sepal.Widht должен быть переименован в virginica.

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Вы можете отказаться от формульных обозначений:

library(magrittr)
irisNest <- iris %>%
  tibble::as_tibble() %>%
  tidyr::nest(-Species) %>%
  dplyr::mutate(Species = as.character(Species))

f <- function(x,y) {dplyr::rename(x, !!y := Sepal.Width)}

irisCheck <- dplyr::mutate(irisNest,
              data = purrr::map2(data, Species, f))
0 голосов
/ 10 марта 2019
library("tidyverse")

rename_func <- function(data, Species) {
  Species <- as.character(Species)
  data %>%
    rename(!!Species := Sepal.Length)
}

iris2 <- as_tibble(iris) %>%
  nest(-Species) %>%
  group_by(Species) %>%
  mutate(
    data = map2(data, Species, rename_func))

iris2 %>% filter(Species == "setosa") %>% unnest() %>% head(1)
#> # A tibble: 1 x 5
#> # Groups:   Species [3]
#>   Species setosa Sepal.Width Petal.Length Petal.Width
#>   <fct>    <dbl>       <dbl>        <dbl>       <dbl>
#> 1 setosa     5.1         3.5          1.4         0.2
iris2 %>% filter(Species == "versicolor") %>% unnest() %>% head(1)
#> # A tibble: 1 x 5
#> # Groups:   Species [3]
#>   Species    versicolor Sepal.Width Petal.Length Petal.Width
#>   <fct>           <dbl>       <dbl>        <dbl>       <dbl>
#> 1 versicolor          7         3.2          4.7         1.4
iris2 %>% filter(Species == "virginica") %>% unnest() %>% head(1)
#> # A tibble: 1 x 5
#> # Groups:   Species [3]
#>   Species   virginica Sepal.Width Petal.Length Petal.Width
#>   <fct>         <dbl>       <dbl>        <dbl>       <dbl>
#> 1 virginica       6.3         3.3            6         2.5

Создано в 2019-03-10 пакетом представ (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...