[英]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個隨機基因型。
我嘗試使用replicate
並apply
但是沒有用。
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.