#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])