【问题标题】:R generating the same random numbers at two placesR 在两个地方生成相同的随机数
【发布时间】:2016-03-04 11:20:06
【问题描述】:

我有这段代码,我希望sample(1:3650, 365, replace=T) 在两个实例中生成相同的数字,但为每个复制生成不同的值。因此,对于每个复制,我生成 365 个随机值,这些值用于 mydf1allt 和 mydf2allt 的附加,但每个复制都有不同的 365 个值。由于它们之间存在相关性,我想捕捉到这一点。这是我为双变量引导创建函数的尝试。我知道如何使用 for 循环来解决这个问题,但它需要永远运行,所以如果没有它就可以了。

listboot1sl = c()
listboot2sl = c()

pairbootstrap2 <- function(y) {

  .GlobalEnv$listboot1sl <-  replicate(10**y, rbind(listboot1sl, max(sum(mydf1allt[,2][sample(1:3650, 365, replace=T)])-17980405,0)))

  .GlobalEnv$listboot2sl <-  replicate(10**y, rbind(listboot2sl, max(sum(mydf2allt[,2][sample(1:3650, 365, replace=T)])-137376627,0)))
}

(mydf2allt 由两列数字组成。)

这是用一个 foo 循环做我希望它在没有一个 foo 循环的情况下做的事情:

pairbootstrap2 <- function(y) {

  for (i in 1:10**y){

   z <- sample(1:3650, 365, replace=T)

  .GlobalEnv$listboot1sl <-  rbind(listboot1sl, max(sum(mydf1allt[,2][z])-17980405,0))

  .GlobalEnv$listboot2sl <-  rbind(listboot2sl, max(sum(mydf2allt[,2][z])-137376627,0))

  }

}

【问题讨论】:

  • ?set.seed? '相同的数字,但不同的值' 是什么意思?这似乎相互矛盾。
  • 我现在试着澄清一下。在第一次复制中,我希望在两个地方使用 365 个随机值。在第二次复制中,我希望在同一个地方使用 365 个新的随机值,依此类推。

标签: r random replicate


【解决方案1】:

我解决了这个问题:

mydfboth <- cbind(mydf1allt[,2], mydf2allt[,2])

list <- replicate(10**6, colSums(mydfboth[sample(1:3650, 365, replace=T),]))

【讨论】:

    猜你喜欢
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2017-07-30
    • 1970-01-01
    • 2014-10-14
    相关资源
    最近更新 更多