map () в аргумент, который не является первым аргументом - PullRequest
2 голосов
/ 10 ноября 2019

У меня есть функция, которая принимает несколько аргументов (простой воспроизводимый пример ниже):


return_numbers <- function(first = 1, last = 10){
  seq(first, last)
}

Если у меня есть вектор, который я хочу получить map(), например:

x <- c(5, 6, 7)

Довольно просто map() вектор x ввести в первый аргумент функции:

map(x, return_numbers)

[[1]]
[1]  5  6  7  8  9  10

[[2]]
[1]  6  7  8  9  10

[[3]]
[1]  7  8  9  10

Но я не могу понять, как отобразить x во второй аргумент (last = ).

Я ссылался на продвинутую версию Хэдли Уикхема R: https://adv -r.hadley.nz / functionals.html # change-аргумент

и пробовал это,но я, должно быть, делаю что-то не так:

map(x, ~ return_numbers(x, last = .x))

Мой желаемый результат будет:

[[1]]
[1]  1  2  3  4  5 

[[2]]
[1]  1  2  3  4  5  6  

[[3]]
[1]  1  2  3  4  5  6  7

Ответы [ 2 ]

3 голосов
/ 10 ноября 2019

Вы также можете упомянуть первый аргумент в явном виде:

return_numbers <- function(first = 1, last = 10){
  seq(first, last)
}
x <- c(5, 6, 7)
purrr::map(x, return_numbers, first=1)
#> [[1]]
#> [1] 1 2 3 4 5
#> 
#> [[2]]
#> [1] 1 2 3 4 5 6
#> 
#> [[3]]
#> [1] 1 2 3 4 5 6 7

Создан в 2019-11-10 пакетом представлением (v0.3.0)

3 голосов
/ 10 ноября 2019

Это должно работать:

map(x, ~return_numbers(last = .))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...