Hi,
I am creating a list of 2 lists, one containing filenames
and the other file descriptors. When I retrieve them I am unable to close
the file descriptor.
I am getting this error when I try to call close(filedescriptors
[[2]][[1]]).
Error in UseMethod("close") :
no applicable method for 'close' applied to an object of class "c
('integer', 'numeric')"
print(filedescriptors[[2]][[1]]) seems to be printing individual elements.
Thanks,
Mohan
filelist.array <- function(n){
cpufile <- list()
cpufiledescriptors <- list()
length(cpufile) <- n
for (i in 1:n) {
cpufile[[i]] <- paste("output", i, ".txt", sep =
"")
cpufiledescriptors[[i]]<-file( cpufile[[i]], "a" )
}
listoffiles <- list(cpufile=cpufile,
cpufiledescriptors=cpufiledescriptors)
return (listoffiles)
}
#Test function
test.filelist.array <- function() {
filedescriptors <- filelist.array(3)
print(filedescriptors[[2]][[1]])
print(filedescriptors[[2]][[2]])
print(filedescriptors[[2]][[3]])
}
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
On 07/30/2013 10:05 PM, mohan.radhakrishnan at polarisft.com wrote:> > Hi, > I am creating a list of 2 lists, one containing filenames > and the other file descriptors. When I retrieve them I am unable to close > the file descriptor. > > I am getting this error when I try to call close(filedescriptors > [[2]][[1]]). > > Error in UseMethod("close") : > no applicable method for 'close' applied to an object of class "c > ('integer', 'numeric')" > > print(filedescriptors[[2]][[1]]) seems to be printing individual elements. > > Thanks, > Mohan > > filelist.array<- function(n){ > cpufile<- list() > cpufiledescriptors<- list() > length(cpufile)<- n > for (i in 1:n) { > cpufile[[i]]<- paste("output", i, ".txt", sep = "") > cpufiledescriptors[[i]]<-file( cpufile[[i]], "a" ) > } > listoffiles<- list(cpufile=cpufile, > cpufiledescriptors=cpufiledescriptors) > return (listoffiles) > } > > > > #Test function > > test.filelist.array<- function() { > filedescriptors<- filelist.array(3) > print(filedescriptors[[2]][[1]]) > print(filedescriptors[[2]][[2]]) > print(filedescriptors[[2]][[3]]) > > } > >Hi Mohan, When you have opened connections as above, you need to pass the connection, not just one element, to "close": close(listoffiles$cpufiledescriptors[[1]]) Jim
Hi,
The solution that works now is
closeAllConnections()
But even if I replace the 'list' with the 'array' I get a
similar error.
"Exception is Error in UseMethod(\"close\"): no applicable
method for
'close' applied to an object of class \"c('double',
'numeric')\"\n"
#Write each CPU's utilization data into a
#separate file
filelist.array <- function(n){
cpufile <- list()
cpufiledescriptors <- array(n,dim=c(0,n))
length(cpufile) <- n
for (i in 1:n) {
cpufile[[i]] <- paste("output", i, ".txt", sep =
"")
cpufiledescriptors[i]<-file( cpufile[[i]], "a" )
}
listoffiles <- list(cpufile=cpufile,
cpufiledescriptors=cpufiledescriptors)
return (listoffiles)
}
Thanks,
Mohan
Re: [R] List of lists
Jim Lemon
to:
mohan.radhakrishnan
31-07-2013 05:19
PM
On 07/31/2013 04:18 PM, mohan.radhakrishnan at polarisft.com
wrote:> Hi Jim,
>
> close(filedescriptors$cpufiledescriptors[[1]])
> close(filedescriptors$cpufiledescriptors[[2]])
> close(filedescriptors$cpufiledescriptors[[3]])
>
> I might be doing something wrong. Error is
>
> Error in UseMethod("close") :
> no applicable method for 'close' applied to an object of class
"c
> ('integer', 'numeric')"
>
Hi Mohan,
I just ran the code within your function "filelist.array" and then was
able to close the connections I had created. I entered your function in R:
filelist.array<- function(n){
cpufile<- list()
cpufiledescriptors<- list()
length(cpufile)<- n
for (i in 1:n) {
cpufile[[i]]<- paste("output", i, ".txt", sep =
"")
cpufiledescriptors[[i]]<-file( cpufile[[i]],
"a" )
}
listoffiles<- list(cpufile=cpufile,
cpufiledescriptors=cpufiledescriptors)
return (listoffiles)
}
and then:
filedescriptors<-filelist.array(3)
close(filedescriptors$cpufiledescriptors[[1]])
close(filedescriptors$cpufiledescriptors[[2]])
close(filedescriptors$cpufiledescriptors[[3]])
and it worked fine. Perhaps a typo in your code somewhere?
Jim
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