使用XML包解决R内存泄漏问题
发布时间:2020-12-16 07:57:01 所属栏目:百科 来源:网络整理
导读:我试图运行一些简单的程序从html代码中提取表.但是,XML包中的readHTMLTable似乎存在一些内存问题.有什么方法可以轻松解决这个问题.就像以某种方式为此命令指定一些特殊内存然后手动释放它. 我试图把它放在一个函数中,并试图使用gc()和不同版本的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()释放内存. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |