首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭R中的read.table连接

关闭R中的read.table连接
EN

Stack Overflow用户
提问于 2013-05-20 23:41:20
回答 2查看 2.9K关注 0票数 0

我正在运行一个加载多个文件的脚本。当达到50个加载的文件时,我得到一个错误“所有连接都在使用中”。

我认为我必须关闭连接,但我遇到了以下问题。

代码语言:javascript
复制
con = file(paste('/home/rstudio/userstats/',cuserid,'.tsv',sep=""))
userstats_current = read.table(con, sep="\t",  header=0, quote="", stringsAsFactors=F)
close(con)
Error in close.connection(con) : invalid connection

但是,如果我键入以下内容,则一切正常:

代码语言:javascript
复制
con = file(paste('/home/rstudio/userstats/',cuserid,'.tsv',sep=""))
close(con)

当应用read.table时,连接是否会发生变化?我如何设法关闭这些连接?

更新

感谢您的回复。问题是,当我运行foreach循环时,即使在一段时间后,我仍然收到所有连接的错误。

代码语言:javascript
复制
registerDoMC(2)
matrix <- foreach(i=1:nrow(sample), .combine=rbind) %dopar% {....}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-21 19:53:40

该错误是由于在文件不存在时运行read.table而导致的。对光盘上不存在的文件进行多次read.table请求时,不会释放连接(与文件确实存在时不同)。

为了克服这个问题,我使用了if (file.exists(文件名)){read.table(文件名)},这似乎已经解决了这个问题。谢谢你们帮我解决了这个问题。

票数 2
EN

Stack Overflow用户

发布于 2014-01-17 07:53:26

通过url()命令进行http调用时,可能会遇到类似的错误

代码语言:javascript
复制
read.table(url("http://...."),....)

当您尝试连接但收到500 Server错误时,可能会发生这种情况。在这种情况下,read.table可能无法正确关闭连接。在这种类型的多次循环之后,您将累积http CLOSE_WAIT套接字,您可以使用'netstat -a‘查看它,从而导致'all connection in use’错误。

这个问题的解决方案是使用RCurl包来执行URL连接,这在堆栈溢出问题中进行了描述:

堆栈溢出:read data from internet

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16653135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档