如何通过致电c[,2]
评估z
?
a <- c(1,2,3)
b <- c(4,5,6)
c <- cbind(a,b)
z <- "c[,2]"
eval(z)
无效。
答案 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))