0

假设我想从对数正态分布中模拟 10 个观察值并重复 100 次。我写了一些 R 代码,但由于某种原因它不起作用。这是代码:

for(i in 1:100) 
 {

x = rlnorm(10, meanlog = 0, sdlog = 1)

 }

有什么想法吗?

4

1 回答 1

3

这可以工作:

lapply(1:100, function(i) rlnorm(10, meanlog = 0, sdlog = 1))

编辑
要计算平均值和标准差,请使用:

lapply(1:100, function(i) {
    x <- rlnorm(10, meanlog = 0, sdlog = 1)
    c(mean=mean(x), sd=sd(x))
})

或者以矩阵格式返回它(使用do.call):

do.call(rbind, lapply(1:100, function(i) {
    x <- rlnorm(10, meanlog = 0, sdlog = 1)
    c(mean=mean(x), sd=sd(x))
}))

并且还要使您的原始代码正常工作(请参阅 DWin 的注释),请使用:

x <- list()
for(i in 1:100) {
    x[[i]] <- rlnorm(10, meanlog = 0, sdlog = 1)
}
于 2012-12-27T01:55:23.950 回答