gpt4 book ai didi

R 循环随机正态分布

转载 作者:行者123 更新时间:2023-12-02 02:38:23 29 4
gpt4 key购买 nike

我正在尝试实现以下目标:我想从正态分布生成 7 个值。然后我想获取这些值,并使用它们作为平均值,从正态分布中生成另外 3 个(对于每个初始值)值来替换它们。我想循环地写这个。

让我们使用 sd = 1.5 和 sd = 0.7,并从平均值 0 开始。

set.seed(1234)

mu.mat<-rnorm(7,mean=0,sd=1.5)

给了我 7 个不错的值。

然后我想创建一个生成 3 范数的数字 num [1:21]。区使用刚刚创建的列表的 mean = 第一个值sd = 0.7 计算值,另外三个使用第二个值,依此类推。形式为:

rnorm(3,mean=mu.mat[1],sd=0.7)

仅适用于循环中的所有条目。

我尝试过的:

mu.mat2<-NULL
for(i in 1:7) {
mu.mat2[i]<-rnorm(3,mean=mu.mat[i],sd=0.7)
}

导致错误:否。要替换的项目数量不是替换长度的倍数

非常感谢有关如何将其放入循环中的任何帮助。提前致谢!

最佳答案

你不需要循环。你可以这样做:

rnorm(21, mean = rep(mu.mat, each = 3), sd = 0.7)
#> [1] -0.4811184 -1.2327778 -1.8603816 -3.3073277 -2.5190560 -3.2298056
#> [7] -2.3695570 -2.0228732 -1.1692489 2.0342910 1.0186855 1.0838678
#> [13] 0.5486730 -0.2439510 -0.1831147 2.2026024 0.1925301 -0.2153864
#> [19] 2.8944894 1.9213206 1.3804706

但是您的代码的问题是您试图将三个值 (rnorm(3,mean=mu.mat[i],sd=0.7)) 写入单个原子索引 mu.mat2[i]。目前尚不清楚您是否期望得到一个矩阵,但如果是这样,您的循环将是:

mu.mat2 <- matrix(ncol = 3, nrow = 7)
for(i in 1:7) {
mu.mat2[i,] <- rnorm(3, mean = mu.mat[i], sd = 0.7)
}

如果您想要 7 x 3 矩阵的结果,您可以这样做:

matrix(rnorm(21, mean = rep(mu.mat, each = 3), sd = 0.7), ncol = 3, byrow = TRUE)
#> [,1] [,2] [,3]
#> [1,] -0.96624036 -1.4808460 -2.6824842
#> [2,] -2.88942108 -1.7299094 -3.0446737
#> [3,] -2.82034688 -0.9570087 -2.1822797
#> [4,] 0.58997289 1.0384926 1.8111506
#> [5,] -0.07705959 -0.1024418 0.7249310
#> [6,] 0.48851487 1.4729882 0.6496858
#> [7,] 1.47961292 1.5653253 2.0629409

关于R 循环随机正态分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63992976/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com