将对象分配给for循环R中的vector

时间:2015-05-28 06:53:41

标签: r for-loop

我是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)

我想将这些样本分配给一个向量,但由于样本数量可能较大,因此必须在循环中完成。

1 个答案:

答案 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