我希望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中。
有什么想法吗?
答案 0 :(得分:1)
这已经解决了。
hap.plot&lt; - pop [sample(1:nrow(pop),size = 1,replace = TRUE),ind.index,sample(1:K,size = 1,replace = TRUE)]