[R] How is a file descriptor stored ?

Berend Hasselman bhh at xs4all.nl
Wed Aug 7 13:09:47 CEST 2013


On 07-08-2013, at 12:13, mohan.radhakrishnan at 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



More information about the R-help mailing list