2017-08-23 13 views
0

Rは、K個のサブアレイのいずれかからランダムな行をサンプリングしたいと思います。私はこれが単一のサブ配列でどのように行われているのか知っていますが、ルーチンを実行するたびに、Rは毎回無作為にではなく最後のサブ配列からサンプリングします。私はしばらくの間それをしていた後、簡単な回避策を見つけることができませんでした。k個のサブアレイのいずれかからのランダムな行のサンプル

問題は、次のコードに関する:上記ルーチンで

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などランダムに2つのサブアレイのいずれかから行をサンプリングするシミュレーションがあります。

何を達成するのかはわかりません私は欲しい。私は成功なしでsample()を試しました。私が考えている修正はhap.plotになければなりません。

アイデア?

答えて

1

これが解決されました。

hap.plot < - ポップ[サンプル(1:nrow(POP)、サイズ= 1、= TRUEを置き換える)、ind.index、サンプル(1:K、サイズ= 1、= TRUEを置き換える)]

関連する問題