メモ: 重複の無いネストループを作る

概要

・expand.gridを使って重複の無いループを作成する。とりあえず2重ループだけ

コード

expand.gridを使うと総当りのインデックスを作ってくれるのでそれを使うことでネストforループは綺麗に書ける
(その辺は下記の参考サイトが詳しい)
ただしexpand.gridは総当り。

今回は重複のないループを作成する。
pipeRを使うと若干可読性が落ちるが以下の様な感じに書ける。単純にVar1 < Var2となる場合だけ抽出している

別案

gtoolsというパッケージにはcombinationsという関数があり、これでも同様に重複のないループを作成できる。
ただし抽出対象とするベクトルが文字列の場合、処理途中でソートされてしまい、出力される順番がぐちゃぐちゃになる。
順番にこだわりがない場合はこちらでも対応可能かと。

対象ベクトルが文字列だとソートされる。

参考

expand.grid関数・outer関数を使って2重forループを美しく書く – My Life as a Mock Quant
http://d.hatena.ne.jp/teramonagi/20110330/1301486306