結果が整数、文字、と数値列?
4 に答える
これには ff パッケージを試してください。
library(ff)
help(read.table.ffdf)
関数 'read.table.ffdf' は、分離されたフラット ファイルを 'ffdf' オブジェクトに読み込みます。また、「read.csv」などの任意の便利なラッパーで動作し、R の通常のラッパー用に独自の便利なラッパー (「read.csv.ffdf」など) を提供します。
200Mb の場合、これと同じくらい簡単な作業です。
x <- read.csv.ffdf(file=csvfile)
(はるかに大きなファイルの場合、マシンと OS に応じて、いくつかの構成オプションを調査する必要がある可能性があります)。
ああ、この人生にはありえないこともあれば、誤解されて不快な状況につながることもあります。@Roman は正しい: 行列は 1 つのアトミック型でなければなりません。データフレームではありません。
行列は 1 つの型でなければならないため、複数の型を処理するためにスヌーカーを試行するbigmemory
こと自体が悪いことです。それはできますか?私はそこに行きません。なんで?他のすべては、データフレームではなくマトリックスを取得していると想定するためです。それはより多くの質問とより多くの悲しみにつながります.
ここでできることは、各列のタイプを識別し、それぞれが特定のタイプのアイテムを含む一連の個別の bigmemory ファイルを生成することです。たとえば、charBM = 文字の大きな行列、intBM = 整数の大きな行列などです。次に、これらすべてからデータ フレームを生成するラッパーを開発できる場合があります。それでも私はそれをお勧めしません:大きなデータフレームグリフィンを生成しようとするのではなく、異なるアイテムをそのまま扱うか、可能であれば均一性を強制します。
@mdsumner の提案は正しいff
です。もう 1 つのストレージ オプションは、R でアクセスできる HDF5 ですncdf4
。残念ながら、これらの他のパッケージは .NET ほど快適ではありませんbigmemory
。
ヘルプファイルによると、いいえ。
ファイルには、1つのアトミックタイプ(たとえば、すべて整数)のみを含める必要があります。ユーザーであるあなたは、ファイルに行名や列名があるかどうかを知っている必要があり、オプションのさまざまな組み合わせが目的の動作を得るのに役立つはずです。
私はこのパッケージ/関数に精通していませんが、Rでは、行列は1つのアトミックタイプしか持つことができません(たとえば、data.framesとは異なります)。