Неявная ссылка на переменную в R - PullRequest
5 голосов
/ 22 июня 2011

Как я могу оценить c[,2] через вызов z?

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

eval(z) не работает.

Ответы [ 2 ]

5 голосов
/ 22 июня 2011

Может быть ниже:

eval(parse(text=z))
2 голосов
/ 22 июня 2011

Если вам действительно нужно динамически собрать вызов функции и затем оценить его, 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...