使用XML包解决R内存泄漏问题

前端之家收集整理的这篇文章主要介绍了使用XML包解决R内存泄漏问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图运行一些简单的程序从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位.

从Win3上的XML 3.98-1.4和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相关文章