R中的隐式变量引用

时间:2011-06-22 01:11:55

标签: r

如何通过致电c[,2]评估z

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

eval(z)无效。

2 个答案:

答案 0 :(得分:5)

可能在下面:

eval(parse(text=z))

答案 1 :(得分: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))