On 12/27/2005 7:59 PM, Seth Falcon wrote:> I would like to be able to use anonymous connections in R and have
> them close themselves when they go out of scope.
>
> Here is an example of what I think should work, but does not at
> present:
>
> ## create test file
> x <- 1:10
> fn <- "anon-con-test-x.rda"
> save(x, file=fn)
> testUrl <- paste("file:/", getwd(), fn, sep="/")
>
> ## use an anonymous connection to load data from
> ## the URL as suggested in help(load).
> for (i in 1:50) {
> print(load(url(testUrl)))
> }
>
> [snip some output]
> Error in url(testUrl) : all connections are in use
>
> If such a feature is not possible/desired for the next release, it
> might be good to add a note to the documentation for connections that
> mentions this issue with anonymous connections.
This is a bug in load, isn't it? load() opens the connection but
doesn't close it.
I think a fix is to add a line to load() as shown below:
Index: load.R
==================================================================--- load.R
(revision 36884)
+++ load.R (working copy)
@@ -11,6 +11,7 @@
if(!isOpen(con)) {
## code below assumes that the connection is open ...
open(con, "rb")
+ on.exit(close(con))
}
magic <- readChar(con, 5)
Duncan Murdoch