我很惊讶,但我无法在r中的arrow::read_csv_arrow
文档中找到nrows
或n_max
参数
是我遗漏了功能,还是它根本没有实现?
是否有一个快速的解决方法?
它不支持它作为一个参数,但您可以通过添加as_data_frame = FALSE
来读取它惰性(不读取所有内容),使用head(.)
(箭头有效识别),并然后collect()
数据。
write.csv(mtcars, "mt.csv", row.names = FALSE)
arrow::read_csv_arrow("mt.csv", as_data_frame = FALSE) |>
head(n = 3) |>
collect()
# # A tibble: 3 × 11
# mpg cyl disp hp drat wt qsec vs am gear carb
# <dbl> <int> <dbl> <int> <dbl> <dbl> <dbl> <int> <int> <int> <int>
# 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
# 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
# 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
具有相同的效果,只有前3行(在本例中)被读入r中的内存。
我们知道它没有提前读取所有数据,因为我们只看read_csv_arrow
的输出,我们会看到它不是一个框架,而是一个箭头"表",它是数据模式的表示,而不是数据本身:
arrow::read_csv_arrow("mt.csv", as_data_frame = FALSE)
# Table
# 32 rows x 11 columns
# $mpg <double>
# $cyl <int64>
# $disp <double>
# $hp <int64>
# $drat <double>
# $wt <double>
# $qsec <double>
# $vs <int64>
# $am <int64>
# $gear <int64>
# $carb <int64>