gpt4 book ai didi

xml - 使用 XML 包解决 R 内存泄漏

转载 作者:数据小太阳 更新时间:2023-10-29 01:58:57 25 4
gpt4 key购买 nike

我正在尝试运行一些简单的程序来从 html 代码中提取表格。但是,XML 包中的 readHTMLTable 似乎存在一些内存问题。有什么办法可以轻松解决这个问题。就像以某种方式为此命令指定一些特殊内存然后手动释放它一样。

我试图将其放入一个函数中,并尝试使用 gc() 和不同版本的 R 以及该程序包,但似乎没有任何效果。我开始感到绝望。

示例代码。如何在不增加内存大小的情况下运行它?

library(XML)
a = readLines("http://en.wikipedia.org/wiki/2014_FIFA_World_Cup")
while(TRUE) {
b = readHTMLTable(a)
#do something with b
}

编辑:像这样的事情仍然占据了我所有的内存:

library(XML)
a = readLines("http://en.wikipedia.org/wiki/2014_FIFA_World_Cup")
f <- function(x) {
b = readHTMLTable(x)
rm(x)
gc()
return(b)
}

for(i in 1:100) {
d = f(a)
rm(d)
gc()
}
rm(list=ls())
gc()

我正在使用 win 7 并尝试使用 32 位和 64 位。

最佳答案

从XML 3.98-1.4和Win7上的R 3.1开始,使用函数free()可以完美解决这个问题。但它不适用于 readHTMLTable()。以下代码完美运行。

library(XML)
a = readLines("http://en.wikipedia.org/wiki/2014_FIFA_World_Cup")
while(TRUE){
b = xmlParse(paste(a, collapse = ""))
#do something with b
free(b)
}

xml2 包有类似的问题,可以使用函数remove_xml() 后跟gc() 来释放内存。

关于xml - 使用 XML 包解决 R 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24497562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com