2011-06-22 64 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))