2
假設我已經通過f <- function(x,y,z) {...}
定義了一個函數。如何在R中抽取函數中的參數(寫爲字符串)?
我希望能夠將調用該函數的表達式轉換爲該函數調用的參數列表;它與do.call
函數相反。
例如,讓我們說我有這樣的功能f
,我也有一個字符串"f(2,1,3)"
。 如何將字符串"f(2,1,3)"
轉換爲參數列表list(x=1,y=2,z=3)
?
假設我已經通過f <- function(x,y,z) {...}
定義了一個函數。如何在R中抽取函數中的參數(寫爲字符串)?
我希望能夠將調用該函數的表達式轉換爲該函數調用的參數列表;它與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
我相信你希望使用'eval'和'parse/deparse'的組合 –