R在两个地方生成相同的随机数

时间:2016-03-04 11:20:06

标签: r random replicate

我有这段代码,我希望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)))
}

(mydf2all由两列数字组成。)

这是一个foor循环做我想要它没有foor循环的事情:

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

  }

}

1 个答案:

答案 0 :(得分:0)

我用以下方法解决了它:

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

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