我试图弄清楚在排除某些选定组合后如何计算 combn 函数返回的组合数量。比方说,我们有一个向量 c("var1","var2","var3","var4","var5") ,我想得到这个向量的所有元素组合,除了那些包含 c(" var4","var5")。这是代码:
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)。谢谢!