作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何从非常大的文件中读取部分数据?
示例数据生成为:
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 文件中读取所选列的最佳方法。
最佳答案
我认为您不能只读取 rds
或 rda
文件的一部分。
另一种方法是使用 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/
我是一名优秀的程序员,十分优秀!