gpt4 book ai didi

R:如何从RDS文件中读取选定的列?

转载 作者:行者123 更新时间:2023-12-03 00:16:16 25 4
gpt4 key购买 nike

如何从非常大的文件中读取部分数据?

示例数据生成为:

set.seed(123)
df <- data.frame(replicate(10, sample(0:2000, 15 * 10^5, rep = TRUE)),
replicate(10, stringi::stri_rand_strings(1000, 5)))
head(df)
# X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X1.1 X2.1 X3.1 X4.1 X5.1 X6.1 X7.1 X8.1 X9.1 X10.1
# 1 575 1843 1854 883 592 1362 1075 210 1526 1365 Qk8NP Xvw9z OYRa1 8BGIV bejiv CCoIE XDKJN HR7zc 2kKNY 1I5h8
# 2 1577 390 1861 912 277 636 758 1461 1978 1865 ZaHFl QLsli E7lbs YGq8u DgUAW c6JQ0 RAZFn Sc0Zt mif8I 3Ys6U
# 3 818 1076 147 1221 257 1115 759 1959 1088 1292 jM5Uw ctM3y 0HiXR hjOHK BZDOP ULQWm Ei8qS BVneZ rkKNL 728gf
# 4 1766 884 1331 1144 1260 768 1620 1231 1428 1193 r4ZCI eCymC 19SwO Ht1O0 repPw YdlSW NRgfL RX4ta iAtVn Hzm0q
# 5 1881 1851 1324 1930 1584 1318 940 1796 830 15 w8d1B qK1b0 CeB8u SlNll DxndB vaufY ZtlEM tDa0o SEMUX V7tLQ
# 6 91 264 1563 414 914 1507 1935 1970 287 409 gsY1u FxIgu 2XqS4 8kreA ymngX h0hkK reIsn tKgQY ssR7g W3v6c

saveRDS 用于保存文件。

saveRDS(df, 'df.rds')

使用以下命令查看文件大小:

file.info('df.rds')$size
# [1] 29935125
utils:::format.object_size(29935125, "auto")
# [1] "28.5 Mb"

使用以下函数读取保存的文件。

readRDS('df.rds')

但是,我的一些文件大小为 GB,并且只需要几列即可进行某些处理。是否可以从 RDS 文件中读取选定的列?

注意:我已经有了经过大量处理后生成的 RDS 文件。现在,我想知道从现有 RDS 文件中读取所选列的最佳方法。

最佳答案

我认为您不能只读取 rdsrda 文件的一部分。

另一种方法是使用 feather 。举个例子,使用我正在使用的大羽毛:

library(feather)
file.info("../feathers/C1.feather")["size"]
# size
# ../feathers/C1.feather 498782328

system.time( c1whole <- read_feather("../feathers/C1.feather") )
# user system elapsed
# 0.860 0.856 5.540
system.time( c1dyn <- feather("../feathers/C1.feather") )
# user system elapsed
# 0 0 0

ls.objects()
# Type Size PrettySize Dim
# c1dyn feather 3232 3.2 Kb 2886147 x 36
# c1whole tbl_df 554158688 528.5 Mb 2886147 x 36

您可以将这两个变量作为完整的 data.frames 进行 react :尽管 c1whole 已经在内存中(因此可能会快一点),但访问 c1dyn 仍然相当快.

注意:某些函数(例如,dplyr 中的几个函数)无法像在 data.frame 上那样在 feather 上运行>tbl_df。如果您的目的只是挑选特定的列,那么就没问题。

关于R:如何从RDS文件中读取选定的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com