0

次のループを使用して、100 万近くのレコードのより大きなリストから連続して取得した 50,000 個の一意の番号のチャンクに対して反復 ODBC クエリを実行しています。(背景: ODBC ソースからのデータが必要ですが、ソースが大きすぎてプルダウンできません。また、DB への書き込みアクセス権がありません。これがハックな回避策であることはわかっていますが、回避策は見つかりませんでした。それは - 我慢してください。) 下の「キー」は、ODBC から取得するために参加するフィールドです。

    for (i in 0:n) 
    {
    batch <- data.frame(key[(50000*i)+1:50000*(i+1),])
    *(other stuff)*
    }

これが i で繰り返されて、動的なレコード範囲が得られることを期待していました。つまり、i=0、1:50000 の場合。i=1 の場合、50001:100000。これは、最初の反復 (i=0) では正常に機能しますが、i の値が高いと、スクリプトが実際に個々の行をスキップしていることに気付きました。スキップされた行の数は i に等しくなります。したがって、i=10 の場合、ベース データ セットの行 500,000 から開始しますが、2 番目と 3 番目のレコードはベース セットの行 500,010 と 500,020 になります。

これは、R がスクリプトの一部を読み違えていることを意味していると確信していますが、エラーを見つけることができません (/飛び出すほどの経験がありません)。

何かご意見は?あるいは、これについて他の方法がある場合は、それらを聞いてみたいです...

読んでくれてありがとう。

4

1 に答える 1

1

実際、あなたはR を誤解していると思います;) 代わりにこれを試してください:

((i * 50000) + 1):((i+1) * 50000)

範囲はi0 ~nです。

于 2013-06-06T22:37:11.307 に答える