我想得到n个变量的所有可能组合中的所有公共元素。
假设我们有3个变量: a、b和c,每个变量有4、2和3个元素。我想在一个列(a,b,c,ab,ac,bc和abc)和第二列中的公共元素中创建一个包含所有可能组合的数据框架。示例:
投入:
a<-c("x1","x2","x3","x4")
b<-c("x2","x5")
c<-c("x3","x4","x6")我希望输出的内容类似于:
name elements
1 a "x1","x2","x3","x4"
2 b "x2","x3","x5"
3 c "x3","x4","x6"
4 ab "x1","x2","x3","x4","x5"
5 ac "x1","x2","x3","x4","x6"
6 bc "x2","x3","x4","x5","x6"
7 abc "x1","x2","x3","x4","x5","x6" 到目前为止,我尝试过这个:
all1<-c("a","b","c")
all2<-list(a,b,c)
all3<-c(a,b,c)
sapply ( 1:3, function(x) combn(all1,x))
sapply ( 1:3, function(x) combn(all2,x))
sapply ( 1:3, function(x) combn(all3,x))发布于 2017-03-08 09:14:56
有很多种方法,这里有一个:
grid <- expand.grid(a=c(T,F), b=c(T,F), c=c(T,F))
grid$results <- mapply(function(x,y,z) {
unique(c(if(x) a,if(y) b,if(z) c))
},grid$a,grid$b,grid$c)输出:
a b c results
1 TRUE TRUE TRUE x1, x2, x3, x4, x5, x6
2 FALSE TRUE TRUE x2, x5, x3, x4, x6
3 TRUE FALSE TRUE x1, x2, x3, x4, x6
4 FALSE FALSE TRUE x3, x4, x6
5 TRUE TRUE FALSE x1, x2, x3, x4, x5
6 FALSE TRUE FALSE x2, x5
7 TRUE FALSE FALSE x1, x2, x3, x4
8 FALSE FALSE FALSE NULLhttps://stackoverflow.com/questions/42666933
复制相似问题