Как генерировать случайные векторы и хранить их в виде нескольких объектов в R?

#r #random

Вопрос:

Я хочу сгенерировать несколько случайных векторов:

 a <- rnorm(10)
b <- rnorm(10)
c <- rnorm(10)
 

Есть ли способ сделать это более лаконично? Например, выполнение следующих действий присваивает одни и те же номера a, b, c , чего я не хочу.

 a <- b <- c <- rnorm(10)
 

Другой способ-использовать цикл for, но есть ли более краткий способ?

Ответ №1:

Мы можем использовать zeallot оператор множественного присваивания ( %<-% для этого

 library(zeallot)
c(a, b, c) %<-% replicate(3, rnorm(10), simplify = FALSE)
 

-проверка

 > head(a)
[1]  0.3268303 -0.3641770 -0.5644841 -1.9312762  0.1363512  1.5742827
> head(b)
[1] -0.2849812 -1.5234004  0.4008743 -0.4625301  0.9541247  0.6801852
> head(c)
[1] -0.8387253  2.1883784 -0.1846793 -0.8896609 -0.3637861 -1.1172537
 

Возможно, было бы лучше создать list и назвать его вместо создания нескольких объектов в глобальной среде, т. е.

 lst1 <- setNames(replicate(3, rnorm(10), simplify = FALSE), letters[1:3])