Доступ к значению переменной, где имя переменной хранится в строке - PullRequest
51 голосов
/ 19 октября 2010

Аналогичные вопросы были заданы для других языков: C , sql , java и т. Д.

Но я пытаюсь сделать это в R.

У меня есть:

ret_series <- c(1, 2, 3)
x <- "ret_series"

Как получить (1, 2, 3), вызвав некоторую функцию / манипуляцию на x, без прямого упоминания ret_series?

Ответы [ 4 ]

69 голосов
/ 19 октября 2010

Вы предоставили ответ на свой вопрос.Попробуйте get.

> get(x)
[1] 1 2 3
18 голосов
/ 20 октября 2010

Для одноразового использования функция get работает (как уже упоминалось), но она плохо масштабируется для более крупных проектов.лучше хранить ваши данные в списках или средах, а затем использовать [[для доступа к отдельным элементам:

mydata <- list( ret_series=c(1,2,3) )
x <- 'ret_series'

mydata[[x]]
5 голосов
/ 21 октября 2010

Что не так с одним из следующих?

eval(as.name(x))

eval(as.symbol(x))
1 голос
/ 20 ноября 2013

Обратите внимание, что некоторые из приведенных выше примеров не будут работать для data.frame.

Например, учитывая

x <- data.frame(a=seq(1,5))

get("x$a") не даст вам x$a.

...