R: создание переменной на лету - PullRequest
1 голос
/ 05 февраля 2012

Я хотел бы попросить некоторой помощи в создании последовательности переменных v1, v2, ... при запуске программы.Я запускаю следующий код для одной такой переменной:

FinishAt <- 1
Sequence <- 1:FinishAt
AsCharacterSequence <- as.character(Sequence)

aa <- paste("v", AsCharacterSequence[1], sep="", collapse="") # [1] "v1"
bb <- eval(substitute(variable), list(variable=as.name(a))) # v1

Проблема, с которой я сталкиваюсь, заключается в том, как мы должны сделать v1 переменной со значением (скажем, 5)..

1 Ответ

4 голосов
/ 05 февраля 2012

Вы можете определить переменные на лету с помощью assign. Например, следующее генерирует три переменные v1 ... v3:

var_names <- paste("v", 1:3, sep="")
for (v in var_names) assign(v, runif(1))

Аналогом assign является get, то есть, если вы хотите значения переменных, используйте что-то вроде:

bb <- sapply(var_names, get)

Также обратите внимание, что и assign, и get имеют необязательный параметр envir, который позволяет вам сохранить эти переменные вдали от остальной части вашего кода.

Я не уверен, но я думаю, что, если существует много переменных, метод assign / get выполняется быстрее, чем список, по крайней мере, если вы хотите найти некоторые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...