Объект .x не найден при использовании purrr: walk2 - PullRequest
1 голос
/ 21 июня 2019

Я пытаюсь бросить функцию на purrr::walk2, то есть:

library(stats19)
library(purrr)

walk2(.x = 2017, .y = "Accidents", .f = dl_stats19(year = .x, type = .y, data_dir = "./data", file_name = paste0("stats19_", .x, "_", .y), ask = FALSE))

# Error in dl_stats19(year = .x$years, type = types, data_dir = data_dir, : object '.x' not found

Я не могу понять, почему .x не включается в функцию dl_stats19()

1 Ответ

1 голос
/ 21 июня 2019

Есть несколько возможных решений.Первое и самое простое - включить тильду перед именем функции, например:

walk2(.x = 2017, 
      .y = "Accidents", 
      .f = ~ dl_stats19(year = .x, 
                        type = .y, 
                        data_dir = "./data", 
                        file_name = paste0("stats19_", .x, "_", .y), 
                        ask = FALSE))

Вы также можете использовать анонимную функцию и сопоставлять аргументы по позиции, например:

walk2(.x = 2017, 
      .y = "Accidents", 
      .f = function(a, b) dl_stats19(year = a, 
                                     type = b, 
                                     data_dir = "./data", 
                                     file_name = paste0("stats19_", a, "_", b), 
                                     ask = FALSE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...