陷入for循环,想要生成数字,但生成了NaN

问题描述 投票:0回答:1

我想通过

简化我的编码

这是我的代码。

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\]))
)

有什么我可以做的吗?我希望将所有循环输出放在一个数据帧或列表结构中。谢谢,祝你有美好的一天!

我希望将所有循环输出放在一个数据帧或列表结构中

r for-loop data-binding
1个回答
0
投票

如果没有可运行的代码,这很难测试,但我相信这一行可以代替你的第二个循环。我们使用矩阵运算通过

i
数据帧的平均值和标准差来转换标准法线绘制。

a = (t(matrix(rnorm(6 * 22), nrow = 6) %*% diag(i$sd)) + i$m) |> 
  t() |> 
  as.data.frame()
© www.soinside.com 2019 - 2024. All rights reserved.