次のサンプルデータテーブルがあります。
id val
1: a 1
2: b 3
3: c 2
4: d 1
列間でランダムなペアを作成id
したいのですが、ID をそれ自体とペアにしたくありません。data.tables でこれを行う最も効率的な方法は何でしょうか? 私が試した1つのアプローチは、次のようにデータテーブルで最初にランダムな行を見つけることです
x = x[sample(nrow(x),1),]
しかし、現在のインデックスが返されたインデックスに存在しないことを確認するためにチェックを実行する必要があるため、ブロックにヒットしました。これは計算コストが高くなります。たとえば、可能な出力結果は次のようになります。
id val id.pair val.pair
1: a 1 b 3
2: b 3 c 2
3: c 2 a 1
4: d 1 a 1
前もって感謝します