我正在尝试排除由包含"var4“和"var5”的combn函数生成的所有组合。下面是目前不起作用的代码:
mod_headers <- c("var1", "var2", "var3", "var4", "var5", "var6")
f <- function(){
for(i in 1:length(mod_headers)){
tab <- combn(mod_headers,i,function(mod_headers){
if (combn(mod_headers,i) %in% c("var4","var5")) {return()}
})
for(j in 1:ncol(tab)){
tab_new <- c(tab[,j])
mod_tab_new <- c(tab_new, "newcol")
print(mod_tab_new)
}
}
}
f()谢谢你的帮忙!
发布于 2017-08-03 19:12:02
这是另一种方法,生成所有组合的列表,然后排除同时包含var4和var5的组合...
lapply(
lapply(1:length(mod_headers),
function(i) combn(mod_headers, i)),
function(x) x[,apply(x, 2, function(y) !all(c("var4", "var5") %in% y))])
[[1]]
[1] "var1" "var2" "var3" "var4" "var5" "var6"
[[2]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
[1,] "var1" "var1" "var1" "var1" "var1" "var2" "var2" "var2" "var2" "var3" "var3" "var3" "var4" "var5"
[2,] "var2" "var3" "var4" "var5" "var6" "var3" "var4" "var5" "var6" "var4" "var5" "var6" "var6" "var6"
[[3]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
[1,] "var1" "var1" "var1" "var1" "var1" "var1" "var1" "var1" "var1" "var2" "var2" "var2" "var2" "var2" "var3" "var3"
[2,] "var2" "var2" "var2" "var2" "var3" "var3" "var3" "var4" "var5" "var3" "var3" "var3" "var4" "var5" "var4" "var5"
[3,] "var3" "var4" "var5" "var6" "var4" "var5" "var6" "var6" "var6" "var4" "var5" "var6" "var6" "var6" "var6" "var6"
...etchttps://stackoverflow.com/questions/45481931
复制相似问题