R中read_csv_arrow中的n_max或nrow参数

f1tvaqid  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(92)

我很惊讶,但我在R的arrow::read_csv_arrow文档中找不到nrowsn_max参数。
是我缺少了功能,还是它根本没有实现?
有没有快速的解决方法?

bbmckpt7

bbmckpt71#

它不支持将其作为参数,但您可以通过添加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的输出,我们会看到它不是一个框架,而是一个箭头“Table”,它是数据模式的表示,而不是数据本身:

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>

相关问题