是否可以将大 .rds 或 .feather 文件的子集导入 R?
Is it possible to import a subset of big .rds or .feather files into R?
我找到了关于 fast ways to import files into R 的好技巧,但我想知道是否可以只将给定文件的一个子集导入到变量中。
就我而言,我有一个包含 1600 万行的文件,保存为 .rds(也保存为 .feather,因为我正在以两种格式的速度播放),我想导入其中的一个子集(例如,几行或几列)用于初步分析。
可能吗? readRDS() 似乎不接受任何子集,而 read_feather() 似乎不允许行选择(尽管您可以指定列)。我应该考虑另一种数据格式吗?
使用 readr::read_csv
您可以使用 n_max
参数并读取任意数量的行。
使用 readRDS
,我想您可以读取文件 dplyr::sample_n
,然后使用 rm(object)
将其从内存中删除。
如果您不能将整个文件读入内存,您可以使用 sqlite
或其他数据库,这是首选方法,或者您可以尝试 readr::read_delim_chunked
,这允许您分块读取文件,对读取的块执行某些操作(如 sample_n),从内存中删除读取的 chukc 并仅保留回调的结果并继续这样直到文件结束。
简短的回答是 'no'。一个不错的选择是 fst
文件格式,它允许从大型数据集中检索选定的列和行。更多信息 here.
我找到了关于 fast ways to import files into R 的好技巧,但我想知道是否可以只将给定文件的一个子集导入到变量中。
就我而言,我有一个包含 1600 万行的文件,保存为 .rds(也保存为 .feather,因为我正在以两种格式的速度播放),我想导入其中的一个子集(例如,几行或几列)用于初步分析。
可能吗? readRDS() 似乎不接受任何子集,而 read_feather() 似乎不允许行选择(尽管您可以指定列)。我应该考虑另一种数据格式吗?
使用 readr::read_csv
您可以使用 n_max
参数并读取任意数量的行。
使用 readRDS
,我想您可以读取文件 dplyr::sample_n
,然后使用 rm(object)
将其从内存中删除。
如果您不能将整个文件读入内存,您可以使用 sqlite
或其他数据库,这是首选方法,或者您可以尝试 readr::read_delim_chunked
,这允许您分块读取文件,对读取的块执行某些操作(如 sample_n),从内存中删除读取的 chukc 并仅保留回调的结果并继续这样直到文件结束。
简短的回答是 'no'。一个不错的选择是 fst
文件格式,它允许从大型数据集中检索选定的列和行。更多信息 here.