大きな.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
あなたの助けをどうもありがとう!
fread
はdata.table
を作成します。 data.table
パッケージには、多数のビネットが付属しています。
あなたの正確な問題はFAQ 1.1 from data.table FAQ -最初のFAQ!
デフォルトでは、[.data.table
の2番目の引数は、data.tableのスコープ内で評価される式です。
したがって、pre[,1]
はpre
のスコープ内で1
を評価します。 1
はまだ1
です。 '列番号で参照したい場合は、with=FALSE
pre[,1,with=FALSE]
を使用してください