我想通过
简化我的编码这是我的代码。
i <- c(1,3,5,7,9,11,13,15,17,19,21)
i <- data.frame(
r=c(1:22),
m =NA,
sd=NA
)
for (x in c(1:22)) {
i$m\[x] = mean(ur[x : (x+1)])
i$sd\[x] =sd(ur[x : (x+1)])
}
for (x in c(1:22)) {
a= rnorm(6, mean= i$m[x], sd = sd(i$sd[x]))
a=data.frame(a)
a=cbind(a)
}
这是输出 我想简单地解释一下我的最后一次循环。我可以从下面的代码中简化这个代码吗?
a= data.frame(
rnorm(6, mean= i$m\[1\], sd = sd(i$sd\[1\])),
rnorm(6, mean= i$m\[1\], sd = sd(i$sd\[1\])),
....,
rnorm(6, mean= i$m\[22\], sd = sd(i$sd\[22\]))
)
有什么我可以做的吗?我希望将所有循环输出放在一个数据帧或列表结构中。谢谢,祝你有美好的一天!
我希望将所有循环输出放在一个数据帧或列表结构中
如果没有可运行的代码,这很难测试,但我相信这一行可以代替你的第二个循环。我们使用矩阵运算通过
i
数据帧的平均值和标准差来转换标准法线绘制。
a = (t(matrix(rnorm(6 * 22), nrow = 6) %*% diag(i$sd)) + i$m) |>
t() |>
as.data.frame()