Как передавать функции как аргументы в do.call? - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь передать функции как args в do.call. Например:

testF <- function(a,b){

  a(b)

}

ijk <- list(a = c(print, print), b = c(1,2))

do.call(testF, ijk, envir = .GlobalEnv)
#Error in a(b) : could not find function "a"

Как исправить указанный выше код?

1 Ответ

1 голос
/ 08 мая 2020

Собственно правильный путь. Думаю, проблема в том, как вы определяете свой a в списке. Используйте function; также, вероятно, list лучше, чем c.

ijk <- list(a=function(x) list(sqrt(x), x^2), b=c(4,9))
do.call(testF, ijk, envir=.GlobalEnv)
# [[1]]
# [1] 2 3
# 
# [[2]]
# [1] 16 81
...