2
我知道功能combn
可以產生所有可能的組合。但是,如果成員總數很大,這非常耗時且耗費內存。如何從所有組合中隨機選取多個組合?
我的目標是從所有可能的組合中隨機挑選組合。例如,我想要3000個成員池中的5000個不同的三位成員。我想我不需要生成所有可能的組合,並從中選擇5000個。但似乎R沒有一個現成的功能來做到這一點。那麼如何處理這個問題呢?
我知道功能combn
可以產生所有可能的組合。但是,如果成員總數很大,這非常耗時且耗費內存。如何從所有組合中隨機選取多個組合?
我的目標是從所有可能的組合中隨機挑選組合。例如,我想要3000個成員池中的5000個不同的三位成員。我想我不需要生成所有可能的組合,並從中選擇5000個。但似乎R沒有一個現成的功能來做到這一點。那麼如何處理這個問題呢?
這不正是你所需要的,但也許它可以讓你開始:
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'))]
這是幫你呢?
這很有幫助。但似乎我需要一個while循環來確保所有集合都是唯一的。 – user2923419 2014-11-25 16:07:22
用最後一個條目(X [duplicateated(X,by = c('V1','V2','V3'))]),你可以檢查是否有重複並刪除它們。在任何情況下,運行10,000並獲得5000的隨機樣本。除非你非常非常不幸:) – Nikos 2014-11-25 16:14:47