組み合わせ

組み合わせの全パターンを出すプログラムをRで欲しくなったので、ちょろちょろっと探してみるとCでのプログラムがhttp://ht.econ.kobe-u.ac.jp/~tanizaki/class/combinat/combinat.pdf:組み合わせを求めるプログラムについて(pdf)というのであったので、これ以上探すのがめんどくさくなって、Rに移植。

誰か使うかもしれないので、一応メモっておく。

n1+n2 C n1の組み合わせを求めるのにはcomb(n1,n2)でオッケー。

comb <- function(n1,n2){
nest <- 0
column <- 1
m <- numeric()
nest0(nest,column,n1,n2,m)
}

nest0 <- function(nest,column,n1,n2,m){
for(i in (nest+1):(n2+column)){
m[column] <- i
if(n1 != column){
nest0(i,column+1,n1,n2,m)
}else{
print(m)
}
}
}

(追記)
うまく動いているように見えたけど、Rで再帰使うとどうも変数に入れられないみたい。
使えねーーっ!!ちょっと対策考え中。

(追記2)
グローバル変数が使いたい・・・・・。使えるのかな?どんどんプログラムが汚くなっていく。

(追記3)
combn()を発見。orz
とほほ。