fread函数中的“强制引入NA的警告”

时间:2018-11-28 20:47:15

标签: r data.table large-data large-files fread

我正在尝试使用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“

可能是什么原因?

1 个答案:

答案 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所示。