第一列为品种名,其它列为标记,每行一个观测,现在要从所有标记中选择n个标记,重新组合成图1的形式,计算一些参数。我建了一个函数,进行标记的全组合:
fun<- function(input,n) {
dna_n<- input[1];
com<- combn(names(input[-1]),n);
number<- choose(ncol(input)-1,n);
for(i in 1:number) dna_n[paste(com[,i],collapse = "+")]<- droplevels(interaction(subset(input,select = com[,i])))
return(dna_n)
}
参数input为图1的数据,n为选取的标记数,这个函数比较暴力,将所有组合都列出,在进行一步计算比较,在标记较小的时候可以很好的实现,但是当标记数太大的时候,运行速度很慢,使用并行运算也没有很好的改善。期望有大神能不能帮忙修改下代码,提高速度,或者提高一个比较好的抽样算法提高我这个穷举法。


雷达卡






京公网安备 11010802022788号







