我想爲統計分析做變量抽樣。我有10個變量,我想檢查其中5個可能的組合。但是,我只想要那些遵循某些規則的人。我只想要那些有1個或2個,3個或4個,5個或6個,7個或8個,9個或10個的換句話說,所有的組合給出5個二元選擇(32)。生成矩陣的組合規則,重複的二元選擇
任何想法如何有效地做到這一點?
一個簡單的想法是找到使用所有5出10:
library(gtools)
sets = combinations(10,5) # choose 5 out of 10, all possibilities
sets = split(sets, seq.int(nrow(sets))) #so it's loopable
然後遍歷符合條件的,因此有希望的32個1結束了這些僅保留的。
但肯定有比這更有效的方法。
只是一個旁註:因爲你知道從一開始你的結果的「長度」,它應該是一個很多更快地預先分配你的「集合」和「變數」。例如。比較這些:'x_full = numeric(1e5); x_empty = numeric(); system.time(for(i in 1:1e5)x_full [i] = i); system.time(for(i in 1:1e5)x_empty = c(x_empty,i));相同(x_full,x_empty)' – 2015-02-23 21:44:28