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.

Reply via email to