我是R的新手,我遇到了一些麻烦。我创建了10个随机数的样本(s1..s10)
for(i in 1:numOfsam) {
assign(paste("s",i,sep=""),rnorm(length,mu,sigma))
smp<-c(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10)
我想将这些样本分配给一个向量,但由于样本数量可能较大,因此必须在循环中完成。
答案 0 :(得分:4)
在你是一位经验丰富的R程序员之前不要使用assign
(然后你很少需要它)。在这里你可以预先分配一个矩阵并填充它。列将与您的样本相对应:
numOfsam <- 3
length <- 5
mu <- 2
sigma <- 0.1
result <- matrix(nrow = length, ncol = numOfsam)
set.seed(42) #for reproducibility
for (i in seq_len(numOfsam)) {
result[,i] <- rnorm(length, mean = mu, sd = sigma)
}
result
# [,1] [,2] [,3]
#[1,] 2.137096 1.989388 2.130487
#[2,] 1.943530 2.151152 2.228665
#[3,] 2.036313 1.990534 1.861114
#[4,] 2.063286 2.201842 1.972121
#[5,] 2.040427 1.993729 1.986668
当然,如果没有for
循环,您可以获得完全相同的结果:
set.seed(42) #for reproducibility
result2 <- matrix(rnorm(length * numOfsam, mean = mu, sd = sigma), ncol = numOfsam)
result2
# [,1] [,2] [,3]
#[1,] 2.137096 1.989388 2.130487
#[2,] 1.943530 2.151152 2.228665
#[3,] 2.036313 1.990534 1.861114
#[4,] 2.063286 2.201842 1.972121
#[5,] 2.040427 1.993729 1.986668