【问题标题】:Memory allocation error in RR中的内存分配错误
【发布时间】:2012-09-17 09:09:42
【问题描述】:

我正在使用 sqldf 包在 R 中执行一个 sql 查询,以在 R 中创建一个数据框。但是,它抛出了一个错误:

Error: cannot allocate vector of size 3.9 Gb

我经历了各种类似问题的线程,但我找不到合适的答案。

谁能帮我解决这个问题。

我在具有 32 GB RAM 的 64 位 linux 机器上使用 R 2.15.1 版本。

【问题讨论】:

标签: r memory-management vector sqldf


【解决方案1】:

这个错误经常被误解。这意味着 R 无法分配额外的 3.9Gb 内存空间块。如果您查看 R 进程,它会在发出您看到的错误之前使用非常大量的可用 RAM,并且您会意识到该错误意味着 额外 RAM。

您将不得不在另一个问题中对此进行扩展,以解释您正在尝试做什么,就好像您无法在 32Gb 可用 RAM 的情况下将数据读入 R 您可能需要查看该数据的增量处理.为此,我们需要您想要实现的目标的详细信息。

【讨论】:

  • 我只是想运行下面的查询。 a mp.id and sp.subcategory_id = mp.subcategory_id Left join d as x on mp.subcategory_id=x.subcategory and x.filter_name= '品牌'”);当我尝试在 SAS 中运行我在 16 GB RAM windows 机器上运行的相同代码时,它工作正常。所以,我无法找出为什么它不在 32 GB RAM 机器上运行。
  • @KunalBatra R 不是 SAS,因此通过 sqldf 的 SQL 不是转换数据的自然方式;尝试使用索引。此外,您可能只是在加载数据集时出错,例如,由于未解释的标题或其他原因,将数字存储为字符串。无论如何,如果没有更多详细信息,我们将无法为您提供帮助。
  • sqldf 默认使用内存数据库,但您可以使用 sqldf(...whatever..., dbname = tempfile()) 指定外部数据库。有关详细信息,请参阅?sqldf 和 sqldf 主页。
【解决方案2】:

这可能是 R 中的内存限制太低了。首先尝试 memory.size() 然后使用 memory.limit() 了解限制并设置新限制。我不确定它是否有帮助。让我们都知道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2019-09-28
    • 2016-09-29
    • 1970-01-01
    • 2023-03-17
    • 2012-11-27
    相关资源
    最近更新 更多