说我有这个功能
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)。
答案 0 :(得分:3)
您可以将您的环境强制转换为列表,然后使用do.call
do.call(myfun, as.list(e))
# [1] 60