【发布时间】:2015-12-28 11:53:53
【问题描述】:
我想知道是否有任何 R 包可以帮助我获得所有可能的 fusion 组合。 换句话说,我有一组 (1,2,3,4,5,6,7,8,9,10),我想得到一组 5 个子集,例如 (1,2,3 ,4,5,6),(7),(8),(9),(10) 或 (2,3,4,5,6),(1,7),(8),(9), (10) 或 (3,4,6) (1,5) (2,7) (9,10) (8) ...等 我设法编写了一个示例测试,但速度很慢:
library(partitions)
set = seq(1,10)
possibleCombinations = restrictedparts(10,5,include.zero = F)
fusionCombinations(set,possibleCombinations[,1],1,list())
fusionCombinations= function(set,setSize,i,prefix){
o=combn(predicted,setSize[i])
for(t in seq(1,ncol(o))){
prefixtemp = prefix
remaining = setdiff(predicted,o[,t])
if(i+1<=length(setSize)){
if(setSize[i+1]>1){
prefixtemp=append(prefixtemp,list(o[,t]))
result=append(result,fusionCombinations(remaining,setSize,i+1,prefixtemp))
}else{
prefixtemp=prefix
prefixtemp=append(prefixtemp,list(o[,t]))
prefixtemp=apply(t(remaining),1,append,prefixtemp)
result=append(result,list(prefixtemp))
}
}
}
return(result)
}
有什么想法吗?
【问题讨论】:
-
predicted未定义。 -
对不起,是的。预测代表集合
-
result在定义之前使用。 -
是的,例如可以是 list()
-
fusionCombinations有一个参数i。i是什么意思?
标签: r combinations