使用存储在环境中的参数评估函数

时间:2014-01-22 04:25:09

标签: r

说我有这个功能

myfun <- function(a=1, b=2, c=3)a * b * c

我也有一个环境,其中存储了一些参数a,b,c,但我不知道哪些(如果有的话)。

例如,

e <- new.env()
assign("a", 10, envir=e)

现在我可以使用do.call使用a环境中的e来评估myfun

do.call(myfun, list(quote(a)), envir=e)

我的问题是,如果我不知道哪些可能的参数实际存储在e环境中会怎么样?我可以将商家信息列为ls(envir=e),但我无法在do.call语句中使用此列表。

目前,假设e永远不会包含myfun不可能参数的对象(即它只能包含a,b或c)。

1 个答案:

答案 0 :(得分:3)

您可以将您的环境强制转换为列表,然后使用do.call

do.call(myfun, as.list(e))
# [1] 60