R + ggplot2 - 无法分配大小为 128.0 Mb 的向量

2024-06-05

我有一个 4.5MB(9,223,136 行)的文件,其中包含以下信息:

0       0
0.0147938       3.67598e-07
0.0226194       7.35196e-07
0.0283794       1.10279e-06
0.033576        1.47039e-06
0.0383903       1.83799e-06
0.0424806       2.20559e-06
0.0465545       2.57319e-06
0.0499759       2.94079e-06

每列中的值表示 0 到 100 之间的值,表示百分比。我的目标是在 ggplot2 中绘制一个图形来检查它们之间的百分比(例如,第 1 列的 20% 是第 2 列达到的百分比)。这是我的 R 脚本:

library(ggplot2)
dataset=read.table("~/R/datasets/cumul.txt.gz")
p <- ggplot(dataset,aes(V2,V1))
p <- p + geom_line()
p <- p + scale_x_continuous(formatter="percent") + scale_y_continuous(formatter="percent")
p <- p + theme_bw()
ggsave("~/R/grafs/cumul.png")

我遇到问题,因为每次运行此 R 都会耗尽内存,并给出错误:“无法分配大小为 128.0 Mb 的向量”。我在 Linux 机器上运行 32 位 R,并且有大约 4GB 的可用内存。

我想到了一种解决方法,包括降低这些值的精度(通过对它们进行四舍五入)并消除重复的行,以便数据集中的行数更少。您能给我一些关于如何做到这一点的建议吗?


您确定 4.5MB 文件中有 900 万行吗(edit:也许你的文件是 4.5 GB??)?它必须被严重压缩——当我创建一个大小十分之一的文件时,它是 115Mb ...

n <- 9e5
set.seed(1001)
z <- rnorm(9e5)
z <- cumsum(z)/sum(z)
d <- data.frame(V1=seq(0,1,length=n),V2=z)
ff <- gzfile("lgfile2.gz", "w")
write.table(d,row.names=FALSE,col.names=FALSE,file=ff)
close(ff)
file.info("lgfile2.gz")["size"]

从您提供的信息中很难判断数据集中有什么样的“重复行”......unique(dataset)将仅提取唯一的行,但这可能没有用。我可能会先简单地将数据集稀疏 100 或 1000 倍:

smdata <- dataset[seq(1,nrow(dataset),by=1000),]

看看接下来的进展如何。 (edit: 忘了逗号!)

大型数据集的图形表示通常是一个挑战。一般来说,你会过得更好:

  • 在绘制数据之前以某种方式汇总数据
  • 使用专门的图形类型(密度图、等高线、六边形分箱)来减少数据
  • 使用基本图形,它使用“绘制并忘记”模型(除非打开图形记录,例如在 Windows 中),而不是点阵/ggplot/网格图形,后者保存完整的图形对象然后渲染它
  • 使用光栅或位图图形(PNG等),它只记录图像中每个像素的状态,而不是矢量图形,它保存所有对象,无论它们是否重叠
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R + ggplot2 - 无法分配大小为 128.0 Mb 的向量 的相关文章

随机推荐

  • 是否可以/容易确定程序使用了多少电量?

    是否可以确定甚至合理估计程序使用了多少电量 这个想法是根据功耗而不是典型性能来分析我的代码 测量 CPU 使用率 GPU 使用率和内存访问量是否足够 有很多方面会影响应用程序的功耗 并且根据所使用的硬件的不同 这些方面会有很大差异 获得想法
  • 反应本机谷歌日历

    我疯狂地搜索 寻找一个可以与谷歌日历一起使用的 React Native 包 获取事件数据并单独显示 标题 描述等 有人知道 React Native 的包吗 Cheers 我最终使用了react native calendar 但为自己创
  • ASP MVC 5 - 403 customError 不起作用

    我正在尝试为我的应用程序创建自定义错误页面 它在大部分情况下都有效 但不适用于403 errors 我的网络配置
  • Javascript/DOM:如何删除 DOM 对象的所有事件侦听器?

    只是问题 有没有办法完全删除对象的所有事件 例如一个div 编辑 我添加每div addEventListener click eventReturner false 一个事件 function eventReturner return f
  • 在 Go 中,如何将函数的 stdout 捕获到字符串中?

    例如 在 Python 中 我可以执行以下操作 realout sys stdout sys stdout StringIO StringIO some function prints to stdout get captured in t
  • Django 管理通过 ImageField 链接到图像

    我已经设置了一个活动的 Django 模型 其中包含以下字段 class Activity models Model thumbnail models ImageField upload to thumbs blank True null
  • 当应用程序从最近的应用程序中滑动时,前台服务会被终止,通知也会被删除

    我有一个foreground service有通知 当应用程序从最近的应用程序托盘中滑出时 服务将被终止 通知也会被删除 这是我的服务的代码VoiceService class Override public IBinder onBind
  • 使用 CommonCrypto 的 Swift AES 加密

    我正在开发一个 iOS 应用程序代码7 1 with 斯威夫特2 1我正在尝试进行简单的加密AES 128 位 and PKCS7填充使用通用加密库 该代码有效 但每次我尝试投射NSData反对NSString然后对于 String 我得到
  • PostgreSQL 中的仅索引扫描和位图索引扫描有什么区别?

    在我的查询中 我只想调用具有精确 where 条件的数据 这些where条件是在index html中创建的 Bu 解释显示了位索引扫描 我不明白为什么 我的查询如下所示 Select r spend r date from metadat
  • 如何以相同的意图从相机获取全尺寸图片和缩略图

    我一直需要找到这个问题的解决方案 我已经从这个社区搜索并测试了许多解决方案 但任何人都适合帮助我 我有两个活动 第一个活动拍摄一张照片并将其发送到另一个活动 该活动有一个 ImageView 来接收该照片 直到这里我遇到问题 以及一个在数据
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • 本地 SQLite 与远程 MongoDB

    我正在设计一个新的 Web 项目 在研究了一些旨在可扩展性的选项后 我提出了两个数据库解决方案 为可扩展方式精心设计的本地 SQLite 文件 每个 X 用户一个新的数据库文件 因为写入将取决于用户内容 不存在跨用户数据依赖性 远程 Mon
  • NSPredicate predicateWithFormat 传入属性名称

    关于 NSPredicate 的简单问题 我正在尝试使用 传入 值构建我的谓词 如下所示 NSPredicate currentPredicate NSPredicate predicateWithFormat key changesDic
  • 我可以将 Team Explorer 2010 与 Visual Studio 2008 一起使用吗?

    我觉得标题已经说得很清楚了 但我也想说一下为什么 我已经下载了 TFS 2010 和 Team explorer 2010 但我仍在使用 VS2008 短期内没有更改计划 我的问题是 我可以一起使用它们吗 另外 我的VS只是专业版 我不想下
  • 从 ef core 的子集合中删除一些项目

    我有一个父表和子表 其中父表与子表具有一对多关系 我想删除一些子项 并且希望父项的子集合反映该更改 如果我使用删除选定的子项RemoveRange 那么子集合不会更新 如果我使用Remove从子集合中删除子集合然后 显然 它不如使用效率高R
  • React-native:远程调试器停止工作

    我总是在我的应用程序和真实设备上使用调试器 但今天它突然停止工作了 打开它时 我的终端中出现此错误 Error Unable to resolve module debugger ui debuggerWorker cff11639 js
  • router.navigate 使用查询参数 Angular 5

    我在使用查询参数路由到路由时遇到问题我有一个像这样的函数 goToLink link this router navigate link split 0 queryParams this sortParams link 和这个功能 sort
  • 直接来自数据的马尔可夫模型图(makovchain 或 deemod 包?)

    我想读取一堆因子数据并从中创建一个可以很好地可视化的转换矩阵 我发现了一个非常好的软件包 称为 heemod 它与 diagram 一起工作得不错 对于我的第一个快速而肮脏的方法 我运行了一段 Python 代码来获取矩阵 然后使用这个 R
  • 基于 C++ 范围的 for 循环

    尝试使用基于范围的 for 循环执行某些操作 可以使用常规的 for 循环来完成 如下所示 vector
  • R + ggplot2 - 无法分配大小为 128.0 Mb 的向量

    我有一个 4 5MB 9 223 136 行 的文件 其中包含以下信息 0 0 0 0147938 3 67598e 07 0 0226194 7 35196e 07 0 0283794 1 10279e 06 0 033576 1 470