从k个子阵列

时间:2017-08-23 15:16:38

标签: arrays r random

我希望R从任何K个子阵列中抽取随机行。我知道如何使用单个子阵列完成此操作,但每次运行我的例程时,R总是从最后一个子阵列采样,而不是每次随机采样。在摆弄了一段时间之后,我找不到简单的解决方法。

该问题与以下代码有关:

K <- 2 # number of subarrays 

N <- 10

Hstar <- 10 

perms <- 10 

specs <- 1:N 

pop <- array(dim = c(c(perms, N), K))

haps <- as.character(1:Hstar)

probs <- rep(1/Hstar, Hstar) 

for(j in 1:perms){
    for(i in 1:K){
        pop[j, specs, i] <- sample(haps, size = N, replace = TRUE, prob = probs)
 }
}

HAC.mat <- array(dim = c(c(perms, N), K))

for(k in specs){
    for(j in 1:perms){
        for(i in 1:K){
            ind.index <- sample(specs, size = k, replace = FALSE) 
            hap.plot <- pop[sample(1:nrow(pop), size = 1, replace = TRUE),     ind.index, i] # I believe the issue lies here
            HAC.mat[k, j, i] <- length(unique(hap.plot)) 
  }
 }
}

在上面的例程中,hap.plot总是包含来自最后一个子阵列的随机行,而不是每次运行模拟时随机选择的子阵列。例如,我想要的是模拟从两个子阵列中的任意一个随机采样行:子阵列2,再次运行,子阵列2,再次运行,子阵列1等。

我不确定如何完成我需要的东西。我试过sample()没有成功。我相信这个修复必须在hap.plot中。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这已经解决了。

hap.plot&lt; - pop [sample(1:nrow(pop),size = 1,replace = TRUE),ind.index,sample(1:K,size = 1,replace = TRUE)]