2015-12-03 14 views
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)

+0

我相信你希望使用'eval'和'parse/deparse'的組合 –

回答

2

在將您的字符串解析爲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 
相關問題