将大型数据集加载到 R 中的最快方法和最快格式是什么[重复]

2024-03-22

我有一个很大的数据集(未压缩时大约 13GB),我需要重复加载它。第一次加载(并保存为不同的格式)可能非常慢,但此后的每次加载都应该尽可能快。加载数据集的最快方式和最快格式是什么?

我怀疑最佳选择是这样的

 saveRDS(obj, file = 'bigdata.Rda', compress = FALSE)
 obj <- loadRDS('bigdata.Rda)

但这似乎比使用慢fread函数在data.table包裹。情况不应该是这样,因为fread从 CSV 转换文件(尽管它确实经过了高度优化)。

约 800MB 数据集的一些时序如下:

> system.time(tmp <- fread("data.csv"))
Read 6135344 rows and 22 (of 22) columns from 0.795 GB file in 00:00:43
     user  system elapsed 
     36.94    0.44   42.71 
 saveRDS(tmp, file = 'tmp.Rda'))
> system.time(tmp <- readRDS('tmp.Rda'))
     user  system elapsed 
     69.96    2.02   84.04

以前的问题

This https://stackoverflow.com/questions/4756989/how-to-load-data-quickly-into-r问题是相关的,但并不反映 R 的当前状态,例如答案表明从二进制格式读取总是比文本格式更快。使用 *SQL 的建议对我来说也没有帮助,因为需要整个数据集,而不仅仅是其中的一个子集。

还有关于一次加载数据最快方式的相关问题(例如:1 https://stackoverflow.com/questions/1727772/quickly-reading-very-large-tables-as-dataframes-in-r).


这取决于您计划如何处理数据。如果您希望将整个数据存储在内存中进行某些操作,那么我想您最好的选择是 fread 或 readRDS(如果这对您很重要,则保存在 RDS 中的数据的文件大小要小得多)。

如果您要对数据进行汇总操作,我发现一次性转换为数据库(使用 sqldf)是一个更好的选择,因为通过对数据执行 sql 查询,后续操作会更快,但这也是因为我不这样做没有足够的 RAM 来加载内存中的 13 GB 文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将大型数据集加载到 R 中的最快方法和最快格式是什么[重复] 的相关文章

  • 将非平凡函数应用于 data.table 的有序子集

    Problem 我正在尝试使用我新发现的 data table 功能 永久 来计算一堆数据的频率内容 如下所示 Sample Channel Trial Voltage Class Subject 1 1 1 196 82253 1 1 1
  • R 中有没有快速替换列值的方法?

    假设我们有一个包含数值的数据框 如下所示 Temperature Height 32 157 31 159 33 139 我想更换Height价值观与pic 00001 pic 00002等等 最终结果是 Temperature Heigh
  • ggmap 错误:GeomRasterAnn 是使用不兼容版本的 ggproto 构建的

    我正在使用 ggmap 并收到以下错误 Error GeomRasterAnn was built with an incompatible version of ggproto Please reinstall the package t
  • xml2 包 (R) 中的 xml_find_all 函数未找到相关节点

    我使用 R 中的 xml2 包来访问 xml 数据 发现它在不同的 xml documents 上表现不同 在这个宠物的例子中 library xml2 doc lt read xml
  • 使用 Rcpp 得出斐波那契数列的意外结果

    我刚刚开始使用Rcpp很抱歉 如果我错过了一个简单的步骤或类似的东西 我已经尝试过这个 sourceCpp library Rcpp sourceCpp code include
  • R中不同级别的李克特分组

    我想使用 Likert 包 并按变量分组并绘制结果 问题是我想要可视化的变量有不同的级别 有没有解决的办法 一个简单的例子来说明我的问题 library reshape library likert foo lt data frame ca
  • R markdown 引文标识符

    R markdown 允许使用 YAML 元数据部分中的参考书目元数据字段指定参考书目文件 例如 title Sample Document output html document bibliography bibliography bi
  • 在多面图中用 N 注释 x 轴

    我正在尝试生成一些按治疗条件和访问次数细分的数字结果的箱线图 每个框中的观察次数都放在图下方 并且也标记了访问次数 这里有一些虚假数据可以用来说明 我举了两个我尝试过但不太有效的例子 library ggplot2 library plyr
  • (R 错误)错误:cons 内存耗尽(达到限制?)

    我正在处理大数据 并且有一个 70GB 的 JSON 文件 我正在使用 jsonlite 库将文件加载到内存中 我尝试过 AWS EC2 x1 16large 机器 976 GB RAM 来执行此负载 但 R 因错误而中断 Error co
  • r 连接两个列表并对它们的值求和

    我有两个列表 x y gt x carlo monte simulation model quantum 31 31 9 6 6 gt y model system temperature quantum simulation proble
  • 在 C# 中扩展数据表

    类的静态构造函数SourceManager遍历所有模块 类并发现所有实现的类ISource 它将实例化其中每一个并公开一个IEnumerable其中作为静态属性称为IEnumerable
  • 如何用月份的全名替换数字月份

    使用 tidyverse 包将月份的列更改为完整的实际月份名称 请记住 尽管这些数据只有四个月 但我的真实数据集包含一年中的所有实际月份 我是 tidyverse 的新手 mydata lt tibble camp c Platinum 2
  • R 中使用 randomForest 进行内存高效预测

    TL DR我想知道使用基于大型数据集 数百个特征 数十万行 构建的随机森林模型执行批量预测的内存有效方法 Details 我正在处理一个大型数据集 内存中超过 3GB 并且想要使用以下方法进行简单的二进制分类randomForest 由于我
  • R 中的 Mapdeck 包 - add_grid 似乎未渲染任何内容

    Problem The add gridR 中的函数mapdeck包很精彩 然而 遵循CRAN 文档 https cran r project org web packages mapdeck mapdeck pdf 我似乎无法获得任何数据
  • 如何将环境变量传递给shinyapps

    我想将安全参数传递给shinyapps io部署 以便我的应用程序可以通过以下方式获取它们 Sys getenv PASSWORD X 我找不到任何相关内容deployApp函数在rsconnect包裹 您可以使用Renviron网站 or
  • 使用 LINQ 更新 DataTable 中的两列

    我想使用 LINQ 查询在一行中更新 DataTable 的两列 目前我正在使用以下两行来执行相同的操作 oldSP Select string Format itemGuid 0 itemGuid ToList
  • 如何使用 grid.arrange 移动图例位置

    我试图在一页中排列 4 个图 将图例放在底部中心 我用它来获取其中一个图的图例 因为它们对于四个图来说是相同的 get legend lt function myggplot tmp lt ggplot gtable ggplot buil
  • 计算数据帧 R 中字符串的频率

    我想计算数据框中某些字符串的频率 strings lt c pi pie piece pin pinned post df lt as data frame strings 然后我想计算字符串的频率 counts lt c pi in pi
  • dplyr 总结小计

    Excel 中数据透视表的一大优点是它们会自动提供小计 首先 我想知道 dplyr 中是否已经创建了任何可以实现此目的的东西 如果没有 实现它的最简单方法是什么 在下面的示例中 我按气缸和化油器的数量显示了平均排量 对于每组气缸 4 6 8
  • 使用 lpSolve 优化 R 团队名单

    我是 R 新手 有一个想要解决的特定幻想运动队优化问题 我见过其他帖子使用 lpSolve 来解决类似的问题 但我似乎无法理解代码 下面的示例数据表 每个球员都在一个球队中 扮演着特定的角色 有薪水 并且每场比赛都有平均得分 我需要的限制是

随机推荐

  • 在 pandas 中,按 DatetimeIndex 中的日期进行分组

    考虑以下综合示例 import pandas as pd import numpy as np np random seed 42 ix pd date range 2017 01 01 2017 01 15 freq 1H df pd D
  • Swift 3:将字符串转换为数组

    我在 SWIFT 3 上的应用程序上 我在屏幕上显示一个句子并记录用户的声音以查看是否匹配 我想提取句子中的每个单词来单独比较每个单词 我使用代码 let StringToLearn word text let StringToLearnA
  • 更改 SQL Server 中的用户定义类型

    我在数据库中创建了一些用户定义的类型 如下所示 CREATE TYPE dbo StringID FROM nvarchar 20 NOT NULL 并将它们分配到不同的表中 我的数据库中的表具有各种模式 不仅dbo 但我意识到我需要更大的
  • 使用jquery打开文件浏览器

    我有以下代码 p Select a file p
  • 使用 NavigationLink 将信息传递到另一个视图

    我有以下视图 我需要通过item内容到另一个视图 DetailsEvent swift 我正在使用NavigationLink 我使用的是 Xcode 11 GM struct Events View ObservedObject var
  • HDFS如何计算可用块?

    假设块大小为 128MB 则集群有 10GB 因此大约 80 个可用块 假设我创建了 10 个小文件 这些文件总共占用磁盘上 128MB 块文件 校验和 复制 和 10 个 HDFS 块 如果我想向HDFS添加另一个小文件 那么HDFS使用
  • 谷歌地图API可以进行语音导航吗?

    如何使用 google 地图 api v3 激活基于语音的方向 我已经实现了给出从起点到终点的方向的地图 但现在我想听听我当前所在位置的名称 请帮忙 我在 ios UIWebView 中实现了它 所以我从 GPS 获取当前位置 现在我每 2
  • JavaScript - for循环问题中变量递增

    我试图创建一个 for 循环 递增数字 1 4 并打印它们 但是当我在循环后打印 i 的值时 我的代码输出 5 for i 1 i lt 5 i document write i br Outputs numbers 1 4 documen
  • Kinect 1.8 颜色帧和深度帧不协调

    我的程序存在深度和彩色图像之间协调不佳的问题 玩家面具与人物不在同一位置 见下图 void AllFreamReady object sender AllFramesReadyEventArgs e using ColorImageFram
  • 等待 5 秒再执行下一行

    下面这个函数并没有像我想要的那样工作 作为一个 JS 新手 我不明白为什么 我需要它等待 5 秒钟 然后再检查是否newState is 1 目前 它不会等待 而是立即检查 function stateChange newState set
  • 将 zip 文件导入为库 - Eclipse Java

    我在导入 google http 库时陷入困境 我在链接中做了一些研究 例如 Eclipse Java 如何导入 zip 格式的库 https stackoverflow com questions 14375810 eclipse jav
  • 将 Java 对象转换为 Java Map

    我在用org eclipse jetty util ajax JSON解析 JSON 文本 但是JSON parse 字符串 方法生成一个对象 我需要它作为映射 在内部 它正是所提到的类的对象 但是 如何在不构造新对象或收到未经检查的转换警
  • 如何配置 Webpack 开发服务器来为特定文件夹提供服务,同时通过不同的服务器运行站点的其余部分?

    一些简单的背景知识 我公司的站点运行 CMS 并由 CMS 处理所有路由 没有 html 文件 只有 razor 文件 cshtml 虽然我更愿意从头开始重做网站 但这不是一个选择 因此我尝试通过将 vue js 与 webpack 开发工
  • gcc *有时*以一种奇怪的方式解决重载歧义

    在回答之前 这不是一个关于如何让这段代码做我想做的事情的问题 我已经知道该怎么做 参见这个问题的结尾 这是一个关于理解编译器为什么要做它所做的事情的问题 请考虑以下 简化的 代码 include
  • Javascript:带有尾随字符的 parseInt()

    parseInt 7em 10 回报7在我测试过的所有浏览器中 但我可以依靠这个吗 我问的原因是 我想根据 em 执行一些计算 例如 elem1 style top uses em units elem2 style top parseIn
  • 什么是“准实施”?

    有时 在搜索会员的推荐信时 我会收到此弹出窗口 这通常需要很长时间 所以我倾向于取消 但我想知道 我错过了什么 什么是 准实施 根据resharper 支持的这个答案 https resharper support jetbrains co
  • 读取 RDS AWS 中的副本

    我是亚马逊 RDS 的新手 我已经在RDS中设置了一个数据库实例 我想尝试 RDS 只读副本功能 我有几个疑问 只读副本适合什么样的应用 只读副本将数据同步还是异步复制到其他只读副本 它是多可用区部署的替代品吗 与MYSQL中的主从或主主复
  • Javascript 中的 try-catch 语句可以捕获哪些类型的错误?

    如果我写 try null foobar catch e alert e 没有任何警报 但ReferenceError已登录到控制台 然而 try barfoo foobar catch e alert e 显示带有以下内容的警报Refer
  • 如何从Windows任务管理器检测程序java强制关闭?

    如果我问了这样一个菜鸟问题冒犯了某人 大家很抱歉 因为我看到有人因不恰当而 标记了 问题 这是我第一次在这里提问 所以如果有什么不合适的地方请原谅我 如果我的英语不是很好 请原谅 当我的程序通过任务管理器关闭时 我试图创建一个临时文件 但我
  • 将大型数据集加载到 R 中的最快方法和最快格式是什么[重复]

    这个问题在这里已经有答案了 我有一个很大的数据集 未压缩时大约 13GB 我需要重复加载它 第一次加载 并保存为不同的格式 可能非常慢 但此后的每次加载都应该尽可能快 加载数据集的最快方式和最快格式是什么 我怀疑最佳选择是这样的 saveR