2015-05-20 28 views
2

參數我試圖做這樣的事情評估字符鏈與R中

add <- function(a, b){a+b} 
multipleadd <- "add(add(1,3),add(add(6,5),add(5,7)))" 
print(something(multipleadd)) # 27 

我如何作出這樣的「東西」,這樣我可以用「multipleadd」作爲自變量的函數的另一個功能。

回答

4

它通常是一個壞主意(即不安全的),以評估仲裁文本字符串,但您可以用eval()parse()

print(eval(parse(text=multipleadd))) 
# [1] 27 
+0

那麼做,感謝一個如此快速和工作的答案。 你會推薦什麼作爲做同樣事情的安全方式?或者,換句話說,如何將帶參數的遞歸(或不)函數傳遞給另一個函數? –

+1

這裏的問題不是函數是遞歸的;問題是你正試圖執行一個字符串。你是如何創建這樣一個字符串的?它來自哪裏? – MrFlick

+0

我不一定要使用一個字符串,我想將一個函數傳遞給另一個函數。將另一個作爲參數的函數會監視並計時執行傳遞給它的函數。然後它會向我發送通知(咆哮或類似,推特,說)。因此,如果我的執行函數看起來像「myFunction(data = mydata,method =」mymethod「等等)」我希望觀察者告訴我myFunction已完成。 –