Я хочу проверить, работает ли функция f, имеющая несколько аргументов, как хотелось бы.
f <- function(x1, ..., xm) {...}
Что я хочу сделать, это указать списки
x1_arguments <- list(x1_1, ..., x1_n1)
...
xm_arguments <- list(xm_1, ..., xm_nm)
и проверьте, что f работает для всех возможных комбинаций x1,...,xm.
я мог конечно
Напишите, например. кадр данных, в котором строки содержат возможные комбинации аргументов x1, ... xm. а затем перебрать строки
Напишите вложенный цикл for/lapply
Однако я хотел бы сделать его красивее, поскольку 1. создает возможно большой объект, который абсолютно не нужен, и 2. выглядит некрасиво.
Есть ли встроенная R-функция, которая позволяет вам это делать, например. обобщенная функция lapply, которая перебирает несколько списков?
xi <- rep(seq_along(x), length(y)); yi <- rep(seq_along(y), each = length(x))
указать индексыx
иy
, затемmapply(f, x = x_arguments[xi], y = y_arguments[yi])
05.03.2020f <- function(x1i, x2i, ..., xmi) {x1 <- x1_args[x1i]; x2 <- x2_args[x2i]; ...}
, т. е. единственное место, где вы используете свой список аргументов, находится вf
и передаете только индексы вx1_arguments
... это в основном обобщенный, вложенный цикл for дляmapply
; ваш звонок будет выглядеть такmapply(f, xi, yi)
05.03.2020