メジャーアップデート
の開発計画がfread
変更されたようfread
で、現在fill
議論を呼んでいます。
この回答の最後と同じサンプル データを使用すると、次のようになります。
library(data.table)
packageVersion("data.table")
# [1] ‘1.9.7’
fread(x, fill = TRUE)
# V1 V2 V3 V4 V5 V6 V7
# 1: AA 3 3 3 3 NA NA
# 2: CC ad 2 2 2 2 2
# 3: ZZ 2 NA NA NA NA NA
# 4: AA 3 3 3 3 NA NA
# 5: CC ad 2 2 2 2 2
「data.table」の開発バージョンを次のようにインストールします。
install.packages("data.table",
repos = "https://Rdatatable.github.io/data.table",
type = "source")
元の答え
これはあなたの質問には答えませんfread
:その質問は@Mattによってすでに解決されています。
ただし、ベース R よりも速度が向上するはずですread.csv
。
とは異なりfread
、読み取ろうとしているデータに関する情報を提供することで、これらの関数を少し支援する必要があります。
input.file
「iotools」から機能を利用できます。列の型を指定することで、フォーマッタ関数に予想される列の数を伝えることができます。
library(iotools)
input.file(x, formatter = dstrsplit, sep = ",",
col_types = rep("character", max(count.fields(x, ","))))
サンプルデータ
x <- tempfile()
myvec <- c('"AA",3,3,3,3', '"CC","ad",2,2,2,2,2', '"ZZ",2', '"AA",3,3,3,3', '"CC","ad",2,2,2,2,2')
cat(myvec, file = x, sep = "\n")
## Uncomment for bigger sample data
## cat(rep(myvec, 200000), file = x, sep = "\n")