背景- 一度に 10 行ずつ取得した 250 行のすべての可能な組み合わせのセットを徹底的に検索したいと考えています。これを繰り返し取得するために、次のコードを使用します
`
## Function definition
gen.next.cbn <- function(cbn, n){
## Generates the combination that follows the one provided as input
cbn.bin <- rep(0, n)
cbn.bin[cbn] <- 1
if (tail(cbn.bin, 1) == 0){
ind <- tail(which(cbn.bin == 1), 1)
cbn.bin[c(ind, ind+1)] <- c(0, 1)
}else{
ind <- 1 + tail(which(diff(cbn.bin) == -1), 1)
nb <- sum(cbn.bin[-c(1:ind)] == 1)
cbn.bin[c(ind-1, (n-nb+1):n)] <- 0
cbn.bin[ind:(ind+nb)] <- 1
}
cbn <- which(cbn.bin == 1)
}
## Example parameters
n <- 40
k <- 10
## Iteration example
for (i in 1:choose(n, k)){
if (i == 1){
cbn <- 1:k
}else{
cbn <- gen.next.cbn(cbn, n)
}
print(cbn)
}
`
40 行を超えると、「サイズ n GB のベクトルを割り当てることができません」というエラーが表示されます。
理想的な解決策: a)ループ内で実行するたびに組み合わせをダンプでき、メモリを繰り返しフラッシュできる場合(ここでさらに条件を確認できます)b)組み合わせをcsvファイルにダンプできる場合メモリ豚。
ご協力ありがとうございました。