【问题标题】:Increase memory limit / can not allocate vector of size 69.2GB增加内存限制/无法分配大小为 69.2GB 的向量
【发布时间】:2020-07-04 00:45:55
【问题描述】:

我目前正在完成我的学士论文,并且是第一次使用 RStudio。 我有一个正在使用的小数据集,它只有 20MB。但是,当我尝试绘制它时,我收到错误“无法分配大小为 69.2GB 的向量”,这对我来说没有任何意义,因为我的数据甚至没有那么大。

我使用的是 64 位 Windows 并拥有 16GB RAM,这就是为什么我也使用 64 位 RStudio 版本的原因。

我尝试了以下方法: 我输入了memory.size(),结果得到了94.6。 我输入了memory.limit(),上面写着:16314。如果我输入 memory.limit(size = 16000) 它说不能减少内存上限,输入 size = 2500 或任何其他数字会产生相同的错误。

由于在 RStudio 中增加内存限制不起作用,我还尝试手动增加它:我右键单击桌面上的 RStudio 并将 --max-mem-size=16000M 放在目标字段中,这也没有改变任何东西。

这是我的代码:

Mois1 <- read.delim("D:/Daten/SoilMoisture/ALL_SM51_SE1_hourly.txt")
Temp1 <- read.delim("D:/Daten/SoilTemperature/ALL_ST51_SE1_hourly.txt")

Mois1 <- rename(Mois1, Date = Date_______Time.UTC. , SWC = SWC.Vol..)
Temp1 <- rename(Temp1, Date = X..Date_______Time.UTC. , Temperature = T..Â.C.)

Mois2019 <- Mois1[1:8756,]
Temp2019 <- Temp1[1:8760,]

plot(Mois2019)

错误出现在plot(Mois2019)之后

我上传了我在这里使用的两个数据文件的两个部分: https://gofile.io/?c=5crw62 两个文档最初各有超过 86000 行。 Mois2019 和 Temp2019 这两个对象有 8756 和 8760,你可以在代码中看到。

如何增加我的内存限制?

【问题讨论】:

  • 通读有关此主题的常见问题解答。如果您找不到要尝试的内容,请编辑此问题(或提出新问题),提供以下内容(a)您的数据的一小部分样本,最好复制/粘贴,如 dput(your_data[1:10, ])(b)(重要)您运行的产生错误的代码行,以及该行中使用的数据以外的任何对象的定义。
  • 这些问题通常可以分为 2 类:(A)你保留了大量的大型数据集,你终于达到了内存限制,(B)你做了一些突然的操作使内存使用爆炸。根据您的错误消息中巨大的 69.2 GB,它可能是案例 (B),这是个好消息,因为这意味着问题可能是您执行某项尝试创建某项的单行代码巨人,如expand.grid 或笛卡尔积加入。但是我们只能在没有看到一些代码和示例数据的情况下猜测。
  • @GregorThomas Post 已编辑。
  • 您的数据集中有多少列?
  • 每个数据集有两列。

标签: r memory


【解决方案1】:

当您使用plot() 而不使用任何其他语法时,您正试图在三个维度(日期、时间、SWC)相互绘制一个非常大的向量 (>8500)。 p>

尝试使用plot(Mois2019$Date, Mois2019$SWC),并且只要求绘制您想要/需要的内容。

【讨论】:

  • 非常感谢!
  • 我很高兴它有帮助。我还想插上ggplot2,这个包可以让你创建漂亮的情节,而且比基础plot()更通用。
猜你喜欢
  • 2017-08-19
  • 2012-06-10
  • 2021-08-31
相关资源
最近更新 更多