メモ
# 多次元表の軸別カテゴリ数 r<-c(2,3,4) # 多次元表の次元 k<-length(r) # 多次元表のセル総数 prod.r<-prod(r) prod.r # 多次元表をアレイに A<-array(1:prod.r,r) A # べき集合を使うためにパッケージを入れる install.packages("sets") library(sets) # 集合を作ろう s<-as.set(1:k) s # 1L は"整数としての1"の意味 # 集合オブジェクトsはリストであることを確認 # 集合から以下で、ベクトルを作るときにunlist()するため str(s) # べき集合を作る power.s<-set_power(s) power.s # べき集合の要素を網羅 for(i in power.s){ print(i) # 集合iはリストになっているので、リストを外してベクトルtmpにする tmp<-unlist(i) # 要素数が0より大なら if(length(tmp)>0){ # 要素数に応じて周辺度数を取ろう print(apply(A,tmp,sum)) } } # 掛け算を重ねて「log-linear-model」 v1<-matrix(c(1,2),ncol=1) v2<-matrix(c(1,2,3),ncol=1) v3<-matrix(c(1,2,3,4),ncol=1) # クロネッカー積:左から掛ける v12<-v2 %x% v1 v12 # 出来上がるのは「長くなったベクトル」なので、それをアレイの箱に納める array(v12,c(2,3)) # 左から掛ける v123<-v3 %x% v12 v123 array(v123,c(2,3,4))