1

私は生物学者で、Python は初めてで、以前は R を少し学びました。

したがって、非常に大きなテキスト ファイル (3 GB、R で処理するには大きすぎる) があり、すべての値はカンマで区切られていますが、拡張子は .txt です (必要な情報かどうかはわかりません)。私がやりたかったことは:

Rのデータフレームに相当するオブジェクトとしてPythonに読み込み、途中の列を取り除き、オブジェクトのサイズを縮小しますtxtファイルとして書き込みます

残りはRに持っていく

あなたが私を助けることができれば、私はとても幸せです. ありがとうございました

4

5 に答える 5

2

ファイル全体を一度にロードしないため、これは最小限のメモリしか消費しません。

import csv
with open('in.txt', 'rb') f_in, open('out.csv', 'wb') as f_out:
    reader = csv.reader(f_in)
    writer = csv.writer(f_out)
    for row in reader:
        # keep first two columns and last three columns
        writer.writerow(row[:2] + row[-3:])

注: Python 3 を使用している場合は、ファイル モードをそれぞれ'r'および'w'に変更します。

于 2013-02-20T16:03:53.580 に答える
0

CRAN (開発に関する新機能とバグ修正) によると、新しい開発ビルド 3.0.0 では、R がページファイル/スワップを使用できるようにする必要があります。Windows では、R_MAX_MEM_SIZE を適切な大きな値に設定する必要があります。

于 2013-02-20T16:15:08.647 に答える
0

前処理ステップの使用を主張する場合は、Linux コマンド ツールを使用するのが非常に優れた高速なオプションです。Linux を使用している場合、これらのツールは既にインストールされています。Windows では、最初に MinGW または Cygwin をインストールする必要があります。この SO の質問は、すでにいくつかの優れた指針を提供しています。基本的に、このツールを使用しawkてテキスト ファイルを繰り返し処理し、その都度出力テキスト ファイルを作成します。私がリンクしたSOの質問の受け入れられた回答からコピーします:

awk -F "," '{ split ($8,array," "); sub ("\"","",array[1]); sub (NR,"",$0); sub (",","",$0); print $0 > array[1] }' file.txt 

これにより、ファイルが読み取られ、8 列が取得され、ファイルにダンプされます。詳細については、回答を参照してください。

于 2013-02-20T16:39:01.260 に答える