如何在 R 中的函数(写为字符串)中提取参数?

How do I extract arguments in a function (written as a string) in R?

假设我通过 f <- function(x,y,z) {...}.

定义了一个函数

我希望能够将调用该函数的表达式转换为该函数调用的参数列表;它与 do.call 函数相反。

比如我有这样一个函数f,我还有一个字符串"f(2,1,3)"。 如何将字符串 "f(2,1,3)" 转换为参数列表 list(x=1,y=2,z=3)?

将字符串解析为 R 表达式后,使用 match.call() 匹配形式参数。

f <- function(x,y,z) {}
x <- "f(1,2,3)"

ee <- parse(text = x)[[1]]
cc <- match.call(match.fun(ee[[1]]), ee)
as.list(cc)[-1]
# $x
# [1] 1
# 
# $y
# [1] 2
# 
# $z
# [1] 3

或者:

f <- function(x,y,z) {...}
s <- "f(x = 2, y = 1, z = 3)"

c <- as.list(str2lang(s))
c[-1]
# $x
# [1] 2
# 
# $y
# [1] 1
# 
# $z
# [1] 3

我刚才一直在寻找解决方案,以便从字符串中重建函数调用。希望这对正在寻找类似问题的解决方案的人有用。