On 07-08-2013, at 12:13, mohan.radhakrish...@polarisft.com 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 ______________________________________________ R-help@r-project.org 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.