2011-06-22 59 views
5

如何通過致電z來評估c[,2]R中的隱式變量參考

a <- c(1,2,3) 
b <- c(4,5,6) 
c <- cbind(a,b) 
z <- "c[,2]" 

eval(z)不起作用。

+0

你想要做什麼?解析任意字符串不太可能是正確的答案。 – hadley

+0

相關:[R eval表達式](http://stackoverflow.com/q/1743698/2157640) – Palec

回答

5

它可能是以下:

eval(parse(text=z)) 
+3

'require(fortunes);幸運(106)' –

2

如果你真的需要動態彙編函數調用,然後評估它,do.call通常是更好的(和更有效)。這是一個有點困難,雖然傳遞缺少的參數,而TRUE也能在這種情況下:

z <- c[TRUE,2] 

等同於:

z <- do.call('[', list(c, TRUE, 2)) 

但這裏有一個黑客獲取缺少的符號,然後可以被使用:

m <- quote(f(,))[[2]] # The elusive missing symbol 
z <- do.call('[', alist(c, m, 2))