我想弄清楚如何排除一些選定的組合後排除combn函數組合的數量。比方說,我們有一個向量c(「var1」,「var2」,「var3」,「var4」,「var5」),我想獲得這個元素的所有組合,除了這些元素的c(「 VAR4" , 「VAR5」)。下面是代碼:梳理返回梳的數量減少一些梳子在R
vector <- c("var1","var2","var3","var4","var5")
exclude <- matrix(c("var4","var5"),1,2)
for(i in 1:length(vector)){
comb <- combn(vector,i)
for(j in 1:ncol(comb)){
newcomb <- c(comb[,j])
if (any(as.logical("FALSE"),apply(exclude, 1, function(x) all(x %in% newcomb)))) {next}
else {print(newcomb)}}
}
從combn函數返回組合的數量沒有任何減少31.土地被認爲是:
f <- function(nvars){
a <- NULL
for (i in 1:nvars){
a[i] <- choose(nvars,i)}
return(sum(a))}
f(5)
任何建議如何讓減少的組合數( 5個變量並排除同時包含「var4」和「var5」的組合,它應該是23)。謝謝!
謝謝!這是我以後的一般解決方案。 – New2coding
你認爲它的價值取代combn函數與一些更快的選擇?我只是想估計我的數據框(〜30列)的組合數量,並且需要很長時間才能返回結果。首先,我計算相關矩陣(即查找在給定級別相關的列),然後執行腳本。 – New2coding
是的,如果你有很多列,數字會變得非常大。你可能需要重新思考你正在試圖用這個來實現。 –