web-dev-qa-db-ja.com

Fread in Rは、大きな.csvファイルを1行のデータフレームとしてインポートします

大きな.csvファイルをR(約50万行)にインポートしているので、read.table()およびread.csv()のより高速な代替手段としてdata.tableパッケージのfread()を使用しようとしています。 )。ただし、fread()は、正しい列数であっても、1行内の行からのすべてのデータを含むデータフレームを返します。これがinteger64データクラスに関連していることを示す2013年のバグレポートを見つけました。

http://r-forge.r-project.org/tracker/index.php?func=detail&aid=2786&group_id=240&atid=975

これを回避するための修正や方法はありますか?

私が読み取ろうとしている.csvファイルは、完全に0から10000の範囲の整数であり、データが欠落していません。 Windows 7コンピューターでRバージョン2.15.2を使用しており、data.tableパッケージのバージョン1.8.8を使用しています。

私が実行しているコードは次のとおりです。

require(data.table)
fread("pre2012_alldatapoints.csv", sep = ",", header= TRUE)-> pre
head(pre)

1: 1 22 -105 22 -105
2: 2 22 -105 22 -105
3: 3 20 -105 20 -105
4: 4 21 -105 21 -105
5: 5 21 -105 21 -105
6: 6 21 -105 21 -105

dim(pre)
[1] 12299  5 #dim returns the correct number of dimensions
#this is a subset of the file I want to import that I've confirmed imports correctly with read.csv

pre[,1]
[1] 1 #but trying to print a column returns this

length(pre[,1])
[1] 1 #and length for any column returns a row length of 1

あなたの助けをどうもありがとう!

8
UCLAEeb

freaddata.tableを作成します。 data.tableパッケージには、多数のビネットが付属しています。

あなたの正確な問題はFAQ 1.1 from data.table FAQ -最初のFAQ!

デフォルトでは、[.data.tableの2番目の引数は、data.tableのスコープ内で評価される式です。

したがって、pre[,1]preのスコープ内で1を評価します。 1はまだ1です。 '列番号で参照したい場合は、with=FALSEpre[,1,with=FALSE]を使用してください

8
mnel