如何在 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
我刚才一直在寻找解决方案,以便从字符串中重建函数调用。希望这对正在寻找类似问题的解决方案的人有用。
假设我通过 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
我刚才一直在寻找解决方案,以便从字符串中重建函数调用。希望这对正在寻找类似问题的解决方案的人有用。