问题描述
|
如何通过调用
z
来评估c[,2]
?
a <- c(1,2,3)
b <- c(4,5,6)
c <- cbind(a,b)
z <- \"c[,2]\"
eval(z)
不起作用。
解决方法
可能在下面:
eval(parse(text=z))
, 如果确实需要动态组装一个函数调用然后对其进行求值,则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))