我想读取更大的 csv 文件但遇到内存问题。因此,我想尝试read_csv_chunked()
从readr
包中分块阅读它们。我的问题是我并不真正理解这个callback
论点。
这是迄今为止我尝试过的一个最小示例(我知道我必须将所需的操作包含到f()
中,否则在内存使用方面不会有优势,对吧?):
library(tidyverse)
data(diamonds)
write_csv(diamonds, "diamonds.csv") # to have a csv to read
f <- function(x) {x}
diamonds_chunked <- read_csv_chunked("diamonds.csv",
callback = DataFrameCallback$new(f),
chunk_size = 10000)
我试图使callback
论点接近官方文档中的示例:
# Cars with 3 gears
f <- function(x, pos) subset(x, gear == 3)
read_csv_chunked(readr_example("mtcars.csv"),
DataFrameCallback$new(f),
chunk_size = 5)
但是,由于我看到进度条移动到 18%,所以我收到了下面的错误,该错误似乎出现在第一个块被读取之后。
eval(替代(expr),envir,enclos)中的错误:未使用的参数(索引)
我已经尝试在其中包含我想要进行的操作f()
,但我仍然遇到同样的错误。