Вы можете использовать purrr::invoke_map
, который принимает комбинацию из списка функций и списка аргументов функции.В этом случае вам нужна только одна функция, но вы можете использовать список списков аргументов x
, a
и b
.
Примечание в вашей функции: у вас есть 3 операторачто касается создания некоторого выхода.Два из них print
, а один - return
.Я изменил return
на print
, думая, что это, возможно, было ошибкой, но не стесняйтесь игнорировать, если это не так.
Используя набор фиктивных аргументов, я звоню invoke_map
и сохраняя его в переменной out
, которая является списком той же длины, что и список ввода.Я сохранил его только потому, что в противном случае у вас есть вещи, распечатываемые дважды: один раз при вызове print
s в функции и один в качестве последней строки возвращается.
library(purrr)
my_func <- function(x, a=0, b=0){
print(x)
if(a == 0){
# return('a is zero')
print("a is zero")
} else {
print(paste0(a, ' and ', b))
}
}
params <- list(
list(x = 10, a = 5, b = 2),
list(x = 3, a = 11, b = 1),
list(x = 5, a = 0, b = 9)
)
out <- invoke_map(my_func, params)
#> [1] 10
#> [1] "5 and 2"
#> [1] 3
#> [1] "11 and 1"
#> [1] 5
#> [1] "a is zero"
Создано в 2019 году-01-23 по представлению пакета (v0.2.1)