сопоставить со списком векторов в качестве аргументов для векторизации - PullRequest
1 голос
/ 04 июня 2019

это общий вопрос о том, как (если возможно) использовать именованный список (или другое очень общее решение) аргументов для векторизации с помощью mapply ().Я пытаюсь найти правильный шаблон здесь, чтобы я мог mapply () для ряда пользовательских функций, без необходимости перечислять имена параметров в вызове mapply ().Вот простой пример:

желаемый вывод, следующий код, не использующий список аргументов

mapply(seq, from = 1:3, to = 3:1)
[[1]]
[1] 1 2 3

[[2]]
[1] 2

[[3]]
[1] 3 2 1

(неудачная) попытка получить желаемый шаблон:

from <- 1:3
to <- 3:1
vectorized_arguments <- list(from, to)
names(vectorized_arguments) <- c("from","to")
mapply(seq, vectorized_arguments)
      from to
 [1,]    1  1
 [2,]    2  2
 [3,]    3  3
 [4,]    4  4
 [5,]    5  5
 [6,]    6  6
 [7,]    7  7
 [8,]    8  8
 [9,]    9  9

1 Ответ

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

Мы можем использовать do.call с Map

do.call(Map, c(f = seq, vectorized_arguments))
#[[1]]
#[1] 1 2 3

#[[2]]
#[1] 2

#[[3]]
#[1] 3 2 1

Или mapply

do.call(mapply, c(FUN = seq, vectorized_arguments))

Или с pmap

library(purrr)
pmap(vectorized_arguments, seq)
...