1

重複の可能性:
ファイルの読み取り中にフィルターを使用してR+でcbc.read.table関数を使用してファイルを読み取ろうとするといくつかの問題が発生します

cbc.read.tablea)Rのパッケージの関数を使用して、比較的大きな.txtファイルを読み取ろうとしていcolbycolます。これまで読んでいたことによると、このパッケージを読んでいると、大きなファイル(1 GBを超えるファイルが読み込まれる)がある場合に作業が簡単になります。 R)分析にすべての列/変数が必要なわけではありません。また、関数が同じのパラメータcbc.read.tableをサポートできることを読みました。ただし、 (Rでファイルのプレビューを取得するために)read.tableパラメーターを渡すと、次のエラーが発生します。nrows

#My line code. I'm just reading columns 5,6,7,8 out of 27
i.can <- cbc.read.table( "xxx.txt", header = T, sep = "\t",just.read=5:8, nrows=20)
#error message
Error in read.table(file, nrows = 50, sep = sep, header = header, ...) : 
formal argument "nrows" matched by multiple actual arguments

だから、私の質問は:この問題をどのように解決できるか教えていただけますか?

b)その後、次のコードですべてのインスタンスを読み取ろうとしました。

i.can.b <- cbc.read.table( "xxx.txt", header = T, sep = "\t",just.read=4:8) #done perfectly
my.df <- as.data.frame(i.can.b) #getting error in this line
Error in readSingleKey(con, map, key) : unable to obtain value for key 'Company' #Company is a string column in my data set

だから、私の質問は再びです:どうすればこれを解決できますか?

c)ファイルの読み取り中に(インスタンスの条件で)フィルタリングする方法を知っていますか?

4

1 に答える 1

1

a)への返信:

cbc.read.table()50行のチャンクでデータを読み込みます。

tmp.data <- read.table(file, nrows = 50, sep = sep, header = header, 
        ...)

関数はすでにnrows引数に値50を割り当てているため、指定した引数nrowsを渡すと、に2つのnrows引数が渡されread.table()、エラーが発生します。私には、これはバグのようです。これを回避するにはcbc.read.table()、指定された引数を処理するように関数を変更するか、引数nrowsのようなものを受け入れるmax.rows(そしておそらくそれを潜在的なパッチとしてメンテナに渡す)ことができます。sample.pctまたは、読み取る行の比率を指定する引数を指定することもできます。したがって、ファイルに100行が含まれていて、50行だけが必要な場合:sample.pct = 0.5

b)への返信:

そのエラーが何を意味するのかわからない。再現可能な例がなければ診断す​​るのは難しいです。小さいファイルを読み込んだ場合も同じエラーが発生しますか?

c)への返信:

私は通常、非常に大きな文字データをMySQLなどのリレーショナルデータベースに保存することを好みます。この場合、R内にSQLiteエンジンを埋め込むRSQLiteパッケージを使用する方が簡単な場合があります。次に、SQL SELECTクエリを使用して、データの条件付きサブセットを取得できます。メモリよりも大きいデータ用の他のパッケージは、ここの大メモリおよびメモリ不足のデータの下にあります:http : //cran.r-project.org/web/views/HighPerformanceComputing.html

于 2012-05-18T16:16:21.057 に答える