【问题标题】:repeating rnorm 20 times but not able to get 20 random outputs重复 rnorm 20 次但无法获得 20 个随机输出
【发布时间】:2017-12-08 05:21:33
【问题描述】:

我目前正在编写一个循环并制作了一个名为growth_rate 的向量。我想使用rnorm 函数为这个向量绘制一个随机数 20 次。我用来执行此操作的代码是

growth_rate <- rep((rnorm(n = 1, mean = 1, sd = 0.4)), times = 20)  

我还做了一个向量,叫

rate <- rnorm(n = 1, mean = 1, sd = 0.4)

制作一个叫作向量

grate <- rep(rate, 20) 

它仍然输出相同的数字 20 次而不是 20 个随机数,例如

[1] 1.304936 1.304936 1.304936 1.304936 1.304936 1.304936 1.304936 1.304936 1.304936

等等……

无论如何我可以在一个向量中输出 20 个随机数,而不是使用 rnorm 生成 20 个单独的向量吗?谢谢!

【问题讨论】:

  • 使用replicate 而不是rep
  • 我使用 >growth_rate
  • @JohnL 请参阅下面的答案和解释。
  • 在 n 参数中替换 20 而不是 1。

标签: r loops vector random


【解决方案1】:

如果要从同一个正态分布中抽取 20 个样本,只需使用 rnorm(20, ...)

set.seed(2017);
rnorm(20, mean = 1, sd = 0.4);
#[1] 1.1843665 0.4939755 0.7252589 0.8217352 1.4896327 1.1439255 1.1603086
#[8] 1.0442731 0.7776635 1.7147653 1.1991402 0.2133531 1.2805424 0.8108834
#[15] 0.5728705 0.9128100 0.5895982 0.7084435 0.7499843 0.3253227

在您的方法中,您首先从正态分布中抽取 一个样本,然后复制 相同的数字 20 次。

【讨论】:

  • 如何将这 20 个 rnorm 样本中的每一个添加到单个年份(1:20 之间)。我正在编写一个循环,它花费的时间比我想象的要长:-/
  • @JohnL “将每个 [...] 样本添加到单独的年份”是什么意思?
  • 我正在编写一个循环,根据 20 年的增长率计算人口规模(从 1000 人开始)。对于每一年,我都使用 rnorm 来尝试获得一个随机增长率来进行计算。我将这个循环放在一起的方法可能完全错误
  • 我不确定您要做什么。您是想每年抽取 20 个样本,还是要抽取 20 个样本,每个样本对应一年?在我上面的示例中,您将从相同的正态分布中抽取 20 个 i.i.d 样本
  • 是的,我想绘制 20 个样本,每个样本对应一个向量中的一年。我基本上想将 20 个样本分配到 1:20 年
猜你喜欢
  • 1970-01-01
  • 2023-01-19
  • 2013-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 2011-08-10
  • 2023-01-13
  • 2011-08-06
相关资源
最近更新 更多