我找到了有关将文件导入 R 的快速方法的好技巧,但我想知道是否可以仅将给定文件的子集导入变量。
就我而言,我有一个包含 1600 万行的文件保存为 .rds(也保存为 .feather,因为我正在玩这两种格式的速度),我想导入它的一个子集(比如说,一些行或几列)进行初步分析。
可能吗?readRDS() 似乎不接受任何子集,而 read_feather() 似乎不允许行选择(尽管您可以指定列)。我应该考虑另一种数据格式吗?
我找到了有关将文件导入 R 的快速方法的好技巧,但我想知道是否可以仅将给定文件的子集导入变量。
就我而言,我有一个包含 1600 万行的文件保存为 .rds(也保存为 .feather,因为我正在玩这两种格式的速度),我想导入它的一个子集(比如说,一些行或几列)进行初步分析。
可能吗?readRDS() 似乎不接受任何子集,而 read_feather() 似乎不允许行选择(尽管您可以指定列)。我应该考虑另一种数据格式吗?
最简洁的答案是不'。一个不错的替代方案是fst
文件格式,它允许从大型数据集中检索选择的列和行。更多信息在这里。
使用readr::read_csv
您可以使用n_max
参数并读取任意数量的行。
使用readRDS
,我想您可以读取文件dplyr::sample_n
,然后使用rm(object)
.
如果您无法将整个文件读入内存,您可以使用其中一个sqlite
或另一个数据库,这是首选方式,或者您可以尝试类似的方法readr::read_delim_chunked
,它允许您分块读取文件,使用读取块(如 sample_n),从内存中删除读取的 chukc 并只保留回调的结果并继续这样直到文件结束。