gpt4 book ai didi

R 双循环

转载 作者:行者123 更新时间:2023-12-01 10:01:59 26 4
gpt4 key购买 nike

我有一个关于在 R 中执行双循环的明显问题,但无法在此网站上找到答案。我正在使用以下代码:

mu <- c(0, .2, .5, .8)
sco <- matrix(nrow = 50, ncol = 4*10)

for (mu in mus) {
for (i in 1:10) {
sco[ ,i] <- mu + rnorm(n = 50, mean = 0, sd = 1)
}
}

我现在得到 10 列 mu + 随机数,但我想得到的是 40 列,其中前 10 列代表 mu 是 0 + 随机数,第 11 到 20 列代表 0.2 + 随机数,等等。

我必须如何修改我的代码才能获得上述这些结果?

提前致谢!

最佳答案

不是所有列的方差都一样吗?为什么不用 50*40 标准正态随机数创建矩阵,然后将 0 添加到前十列,将 0.2 添加到接下来的十列等等?!

编辑:

一个例子是这样的:

result <- matrix(rnorm(50*40,mean=0,sd=1),ncol=40)
mu <- c(rep(0,10),rep(10,10),rep(20,10),rep(30,10))

result <- t(t(result) + mu)

我忘记了如何按列添加向量,因此使用 2 个转置进行了丑陋的工作...我为 mu 选择了不同的值以使结果更清晰。

循环解决方案看起来像这样(虽然我不会使用这段代码,但你要求它......)

mus <- c(0, 10, 20, 30)
sco <- matrix(nrow = 50, ncol = 4*10)

for (mu in 1:4) {
for (i in 1:10) {
sco[ ,i+(mu-1)*10] <- mus[mu] + rnorm(n = 50, mean = 0, sd = 1)
}
}

关于R 双循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14797027/

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