我正在尝试使用fread()
读取2列(x,y)和约3000万行(62 GB)的表,并在散点图中绘制x和y。我使用的是“ fread”,如果我只使用一小部分数据(例如30000行),则效果很好。
但是如果我在整个数据集上运行它,则会得到:
“警告信息:
在setattr(ans,“ row.names”,.set_row_names(nr))中:
通过强制将NA引入整数范围
/var/spool/torque/mom_priv/jobs/11244921.cri16sc001.SC:第14行:70765已杀死Rscript 10_plotZ0Z1.R“
可能是什么原因?
答案 0 :(得分:2)
您可以按照注释中的建议对大文件进行采样。不幸的是,似乎fread
尚未实现这样的功能-请参见this opened issue(升级该功能可能会激励开发人员进行这项工作)。但是如here所述,如果您使用的是Linux,请尝试使用shuf -n
shell命令:
library(data.table)
# Generate some random data
dt <- data.table(x = rnorm(10^6), y = rnorm(10^6))
# write to csv file
fwrite(dt, "test-dt.csv")
# Read a random sample of 10^5 rows
dt2 <- fread(cmd = "shuf -n 100000 test-dt.csv")
dt[, plot(x,y)]
或者,您可以通过多次调用fread
来读取文件中的行块,如here所示。