forループを使用して前方または後方に検索している場合、配列内の特定の要素を検索しているときに異なる答えが得られます。
例: 正解を返すコード
vg = rep(seq(0.9,1.1,0.01),90)
vals = seq(0.9,1.05,0.01)
for(val in vals){
idx = c()
idx = which((vg) %in% (val))
cat(val,":",length(idx),"\t")
}
このコードは、0.9:90 0.91:90 0.92:90 0.93:90 0.94:90 0.95:90 0.96:90 0.97:90 0.98:90 0.99:90 1:90 1.01:90 1.02:90 1.03:90 1.04:90 1.05 :90
どちらが正しい。しかし、以下のコードを使用して上記の vg 変数の seq を変更すると:
vg = rep(seq(1.1,0.9,-0.01),90)
vals = seq(0.9,1.05,0.01)
for(val in vals){
idx = c()
idx = which((vg) %in% (val))
cat(val,":",length(idx),"\t")
}
以下に示す答えが得られます.0.96、0.97などの検索中に0個の要素が表示されます.
0.9:0 0.91:0 0.92:0 0.93:90 0.94:90 0.95:90 0.96:0 0.97:0 0.98:0 0.99:0 1:90 1.01:90 1.02:90 1.03:90 1.04:90 1.05:90:90:90
両方のコードでまったく同じ要素を検索しているのに、なぜこの不一致が生じるのでしょうか? これはRバグですか?