2014-11-25 80 views
2

我知道功能combn可以產生所有可能的組合。但是,如果成員總數很大,這非常耗時且耗費內存。如何從所有組合中隨機選取多個組合?

我的目標是從所有可能的組合中隨機挑選組合。例如,我想要3000個成員池中的5000個不同的三位成員。我想我不需要生成所有可能的組合,並從中選擇5000個。但似乎R沒有一個現成的功能來做到這一點。那麼如何處理這個問題呢?

回答

2

這不正是你所需要的,但也許它可以讓你開始:

library(data.table) #to make the table easier 
members=1:3000; 
X=data.table(RUN=1:5000) 
X<-X[,as.list(sample(members, 3)),by=RUN] 

這將創建一個隨機從會員矢量選擇的3個新列。將它們視爲每個成員的ID。

多少作爲唯一使用我會做一個檢查,看看:

X[duplicated(X, by=c('V1','V2','V3'))] 

這是幫你呢?

+0

這很有幫助。但似乎我需要一個while循環來確保所有集合都是唯一的。 – user2923419 2014-11-25 16:07:22

+0

用最後一個條目(X [duplicateated(X,by = c('V1','V2','V3'))]),你可以檢查是否有重複並刪除它們。在任何情況下,運行10,000並獲得5000的隨機樣本。除非你非常非常不幸:) – Nikos 2014-11-25 16:14:47