Автоинкрементное имя переменной в цикле R - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь создать функцию, которая автоматически создает n переменных с именами x1, x2, ..., xn. У меня есть подход, который работает только через консоль, а не в функции (Руниф создает массив из 1000 чисел от -1 до 1, который должен быть назначен переменной):

for(i in 1:n) {
   assign(sprintf("x%d",i),runif(1000,min=-1,max=1))
}

Когда я использую его в функции, в среде не создаются переменные ...

Я пытался сделать что-то вроде этого:

for(i in 1:n) {
   sprintf("x%d",i) <- runif(1000,min=-1,max=1))
}

Но это возвращает ошибку "цель назначения расширяется до неязыкового объекта" . Также пытался использовать as.name (), eval (), aso. Но я не получил список переменных от x1 до xn в моей среде через функцию.

Может ли кто-нибудь дать мне подсказку? Спасибо заранее!

1 Ответ

0 голосов
/ 10 мая 2018

Вы уверены, что хотите создать n другую переменную? Способ R - создать matrix или data.frame и поиграть с ним. Если это действительно 1000 переменных, которые вам нужны, то этот вопрос дает:

f<-function(n)for(i in 1:n){
    assign(sprintf("x%d",i),runif(1000,min=-1,max=1),envir = .GlobalEnv)
}
f(10)
x5

Попробуйте онлайн!

но вы действительно должны сделать:

f<-function(n){
x <- matrix(runif(1000*n),ncol=n)
colnames(x) <-paste0(rep("x",n),1:n)
x
}
f(10)

Попробуйте онлайн!

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