簡體   English   中英

在R中引導兩個數據集

[英]Bootstrapping two datasets in R

我有兩個數據框,如下所示:

 seed(1) 
 X <- data.frame(matrix(rnorm(2000), nrow=10))

行代表基因,列代表基因型。

對於每一輪自舉( n=1000 ),應從該數據集( X )中隨機選擇基因型而不進行替換,並形成兩組數據集( X'應具有5個基因型, Y'應具有5個基因型)。 基本上,最后我將擁有數千個這樣的數據集X'Y' ,它們將包含來自完整表達數據集的5個隨機基因型。

我嘗試使用replicateapply但是沒有用。

B <- 1000
replicate(B, apply(X, 2, sample, replace = FALSE))

我認為您最好從200中選擇10個而不替換的列號(每個X'和Y'為5):

colnums_boot <- replicate(1000,sample.int(200,10))

從那里開始,當您評估每個迭代(即1到1000)時,您可以抓住

Xprime <- X[,colnums_boot[1:5,i]]
Yprime <- X[,colnums_boot[6:10,i]]

這樣可以避免制作3維array (R中matrix的一般化)。

另外,如果需要考慮速度,我認為將X用作矩陣而不是數據幀會更快。 也許其他人可以對此發表評論。

編輯:這是一種將它們全部預先捕獲的方法(以一對三維數組的形式):

Z <- as.matrix(X)
Xprimes <- array(,dim=c(10,5,1000))
Xprimes[] <- Z[,colnums_boot[1:5,]]

Yprimes <- array(,dim=c(10,5,1000))
Yprimes[] <- Z[,colnums_boot[6:10,]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM