メモ

# 多次元表の軸別カテゴリ数
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))