On 17/06/2010 12:43 PM, Ben Madin wrote:
G'day all,

The documentation for tempfile states :

"The names are very likely to be unique among calls to tempfile in an R session and 
across simultaneous R sessions. The filenames are guaranteed not to be currently in 
use."

My problem I think relates to the second part of the sentence, which is the 
guarantee... and it is being met ... but I need to save the files as .png 
files, in the same directory, so I am adding the suffix and I suppose therefore 
the next offering can be unique (as it doesn't have the prefix)

I am using a command like :

> fname <- basename(tempfile("nahis", "/Library/WebServer/Documents/nahis/tmp"))

on a mac, or
> fname <- basename(tempfile("nahis", "/htdocs/nahis/tmp"))

on a FreeBSD system, as I need to be able to find the file from the web browser 
up to 24 hours later.

and then
> this_filename <- paste(fname, ".png", sep = "")

and saving the file as this_filename, hence the next call doesn't find it's own 
suggestion, and starts again.

It sounds as though you are doing something strange with the random number seed, because those names are chosen at random, and then checked for uniqueness. If the seed is being reset you could get the same name twice in a row, but otherwise it's very unlikely. (And it's the C library function rand(), not R's RNG that is used.)
Is there any alternative filenameing approach I can use to get around this? Do 
I need to manually scan and reject the name if it matches the names I already 
have? Should I just digest the current time ? (It's working so far!)

If you use the current time, watch out for timer accuracy and fast computers. You may be able to get more than one file created before the next timer tick.

I'd suggest that you should generate more than enough filenames once at the start, confirm they're all unique, and then just take them one by one as needed. Alternatively, create the tempfile() as well as the tempfile().png, but this is likely to be really slow if the seed is the same each time, because checking for the existence of the first n tries is going to be slow.

Duncan Murdoch

______________________________________________
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