核家族の確率・尤度をピボットで連結する

SumPivot<-function(cpnout,like,info){
	ret<-NULL
	#pivotted<-set()
	#pivotted<-list()
	pivotted<-rep(0,length(info))
	cumulProb<-list()
	for(nn in 1:length(cpnout)){
		tmpdim<-dim(cpnout[[nn]][[1]])
		tmp<-rep(1,tmpdim[1])
		if(pivotted[[cpnout[[nn]][[2]][[1]]]]==1){
			#print("yesagain")
			tmp<-cumulProb[[cpnout[[nn]][[2]][[1]]]]
		}
		for(i in 2:length(tmpdim)){
			tmp2<-rep(1,tmpdim[i])
			if(pivotted[[cpnout[[nn]][[2]][[i]]]]==1){
				#print("yesagain")
				tmp2<-cumulProb[[cpnout[[nn]][[2]][[i]]]]
			}
			tmp<-tmp%o%tmp2
		}
		#print(tmp)
		#print(like[[nn]])
		#print(dim(tmp))
		#print(dim(like[[nn]]))
		tmp3<-like[[nn]]*tmp
		#print(tmp3)
		#ret<-apply(like[[nn]],length(cpnout[[nn]][[2]]),sum)
		ret<-apply(tmp3,length(cpnout[[nn]][[2]]),sum)
		#pivotted<-pivotted | as.set(cpnout[[nn]][[2]][[length(cpnout[[nn]][[2]])]])
		#pitotted[[cpnout[[nn]][[2]][[length(cpnout[[nn]][[2]])]]]]<-1
		pivotted[cpnout[[nn]][[2]][[length(cpnout[[nn]][[2]])]]]<-1
		cumulProb[[cpnout[[nn]][[2]][[length(cpnout[[nn]][[2]])]]]]<-ret
		#print(ret)
		#print(pivotted)
		#print(cumulProb)
		#print("-----")
	}
	sum(ret)
}