【问题标题】:Memory management in R ComplexUpset PackageR ComplexUpset 包中的内存管理
【发布时间】:2021-11-15 12:29:56
【问题描述】:

我正在尝试使用 ComplexUpset 包在不安图中绘制堆积条形图。我想得到的情节看起来像这样(在我的例子中 mpaa 将是组件):

我有一个大小为 57244 x 21 的数据框,其中一列是 ID,另一列是记录类型,其他 19 列是从 1 到 19 的组件:

ID  component1   component2 ... component19   type
1   1            0              1             a
2   0            0              1             b
3   1            1              0             b

1 和0 表示与某个组件的从属关系。如文档中的example 所示,我首先将这些 1 和 0 转换为逻辑,然后尝试绘制基本的不安图。代码如下:

df <- df %>% mutate(across(where(is.numeric), as.logical))
components <- colnames(df)[2:20]
upset(df, components, name='protein', width_ratio = 0.1)

但不幸的是,在处理最后一行时考虑了一段时间后,它会吐出如下错误消息:

Error: cannot allocate vector of size 176.2 Mb

虽然我知道我使用的是 32Gb RAM 架构,但我确信我无法将内存泛滥到无法分配 167 Mb 的程度,所以我猜我在 R 中管理内存有点错误.如果可能的话,请你解释一下我的代码有什么问题。

我也知道 UpsetR 包绘制相同的数据,但据我所知,它没有提供堆叠条形图的方法。

【问题讨论】:

  • 使用sample_n,获取数据的简化版本,然后尝试一下。
  • @Mossa sample_n 适用于某些值,它会绘制图形,但应该使用采样数据吗?有没有办法使用整个数据集?
  • 这不是一个解决方案,而是一个让您调查正在发生的事情的工具。也许你有一个不存在的因素,或者你有不重要的值,等等。如果调用与 sample_n 一起工作,你可以看到图中不重要的部分,然后你可以调整它。跨度>
  • 好的,谢谢
  • 挖掘回溯(遇到错误后运行traceback() 的结果)以识别堆栈中尝试分配该向量的调用。它还可以帮助您阅读 `` ?Memory-limits ``。

标签: r upsetplot


【解决方案1】:

不知何故,如果你:

  1. 调整min_size 参数,使绘图不会超载并给人留下更好的印象
  2. ComplexUpset 的第一个参数作为包含一些数据的样本也有帮助,即使您的样本是整个数据集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2018-08-04
    • 2013-10-25
    • 1970-01-01
    相关资源
    最近更新 更多