Hi,
The file handling code sometimes throws this exception.
Error in UseMethod("close") :
no applicable method for 'close' applied to an object of class "c
('integer', 'numeric')"
Is there a sample based on my code that I can test ? I want to extract the
file descriptors from the hashmap and close them. I think that is causing
the exception. Sometimes just closing - close(fd) - is causing this too.
Thanks,
Mohan
RE: [R] How is a file descriptor stored ?
William Dunlap
to:
Berend Hasselman, [email protected]
07-08-2013 08:01 PM
Cc:
"[email protected]"
> Use
>
> assign(key, file( key, "w" ), envir=cpufile)
>
> In your assign expression you are assigning cpufile to the third formal
argument which is
> pos.
> You meant the envir argument, I presume.
Or use the syntax
cpufile[[key]] <- file(key, "w")
instead of
assign(key, file( key, "w" ), envir=cpufile)
The former works for lists and environments and corresponds to your
later usage of
listoffiles[[key]]
to retrieve the data.
>From what I've seen of your example, a list might be a better way to
store your data, because of its copy-on-write semantics and because
it doesn't keep a parent environment in memory. By using
'[[' instead of 'get' and 'assign' you minimize the number of changes
required to switch between a list and an environment.
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: [email protected] [mailto:[email protected]]
On Behalf
> Of Berend Hasselman
> Sent: Wednesday, August 07, 2013 4:10 AM
> To: [email protected]
> Cc: [email protected]
> Subject: Re: [R] How is a file descriptor stored ?
>
>
> On 07-08-2013, at 12:13, [email protected] wrote:
>
> >
> > Hi,
> > I thought that 'R' like java will allow me to store file names
> > (keys) and file descriptors(values) in a hashmap.
> >
> >
> > filelist.array <- function(n){
> > sink("nmon.log")
> > cpufile <- new.env(hash=T, parent=emptyenv())
> > for (i in 1:n) {
> > key <- paste("output", i, ".txt", sep = "")
> > assign(key, file( key, "w" ), cpufile)
> > }
> > sink()
> > return (cpufile)
> > }
> >
> > But when I try to test it like this there is an exception
> >
> > [1] "Exception is Error in UseMethod(\"close\"): no applicable method
for
> > 'close' applied to an object of class \"c('integer', 'numeric')\"\n"
> >
> > test.simple.filelist.array <- function() {
> >
> > execution <- tryCatch({
> > sink("nmon.log")
> > listoffiles <- filelist.array(3)
> > for (v in ls(listoffiles)) {
> > print(paste("Map value is [",
listoffiles[[v]], "]"))
> > fd <- listoffiles[[v]]
> > close(fd)
> > }
> > sink()
> > }, error = function(err){
> > print(paste("Exception is ",err))
> > })
> > }
> >
> > I think I am missing some fundamentals.
> >
>
> Read the help page for assign more carefully.
> Use
>
> assign(key, file( key, "w" ), envir=cpufile)
>
> In your assign expression you are assigning cpufile to the third formal
argument which is
> pos.
> You meant the envir argument, I presume.
>
> Berend
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
This e-Mail may contain proprietary and confidential information and is sent
for the intended recipient(s) only. If by an addressing or transmission error
this mail has been misdirected to you, you are requested to delete this mail
immediately. You are also hereby notified that any use, any form of
reproduction, dissemination, copying, disclosure, modification, distribution
and/or publication of this e-mail message, contents or its attachment other
than by its intended recipient/s is strictly prohibited.
Visit us at http://www.polarisFT.com
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.