kwright@eskimo.com
2004-Apr-23 23:55 UTC
[Rd] Weirdness with choose.files on Microsoft Windows (PR#6818)
Full_Name: Kevin Wright Version: 1.8.0 OS: Windows 95 Submission from: (NULL) (170.54.59.160) This bug also happens to me using R 1.9.0 on Windows 2000. Took me a long time to create a reproducible bug, but I think I have succeeded. I suspect my test function has a bug, but I don't see anything wrong. Plus, the bug only shows up when selecting certain filenames. Nearest I can speculate, choose.files becomes confused after a filename that has capital letters and numbers has been chosen. Sounds crazy and I'd like to know more, but choose.files is mostly .Internal code. First, create two CSV files. library(nlme) data(Oats) write.table(Oats,"c:/oats.csv",sep=",") write.table(Oats,"c:/C20oats.csv",sep=",") Quit R and restart. Follow the steps below. Select oats.csv the first 4 times, then select C20oats.csv and then select oats.csv . Notice how the filename is corrupted the final time. test <- function(){ cat("press ENTER for a gui file selector\n") gas.filename<-readline() if(gas.filename=="") gas.filename <- choose.files("*.csv",multi=FALSE,caption="Hi") if(file.exists(gas.filename)){ cat("Reading ",gas.filename,"\n") DFgas<-read.csv(gas.filename) } else cat("The file",gas.filename," cannot be found\n") cat("press ENTER for a gui file selector\n") nir.filename<-readline() if(nir.filename=="") nir.filename <- choose.files("*.csv",multi=FALSE, caption="Choose one gas CSV file") if(file.exists(nir.filename)){ cat("Reading ",nir.filename,"\n") DFnir<-read.csv(nir.filename) } else cat("The file", nir.filename," cannot be found\n") }> test()press ENTER for a gui file selector Reading C:\oats.csv press ENTER for a gui file selector Reading C:\oats.csv> test()press ENTER for a gui file selector Reading C:\oats.csv press ENTER for a gui file selector Reading C:\oats.csv> test()press ENTER for a gui file selector Reading C:\C20oats.csv press ENTER for a gui file selector The file C:\oats.csv\sv cannot be found>
Prof Brian Ripley
2004-Apr-24 10:15 UTC
[Rd] Weirdness with choose.files on Microsoft Windows (PR#6818)
The problem is that a buffer is not being zeroed, so you have part of the previous filename. I don't even get that far as the first read is incorrect for me. The code is plain wrong for multi=FALSE as the return format of GetOpenFileName is different. Fixed for R 1.9.1. On Fri, 23 Apr 2004 kwright@eskimo.com wrote:> Full_Name: Kevin Wright > Version: 1.8.0 > OS: Windows 95 > Submission from: (NULL) (170.54.59.160) > > > > This bug also happens to me using R 1.9.0 on Windows 2000. > > Took me a long time to create a reproducible bug, but I think I have succeeded. > I suspect my test function has a bug, but I don't see anything wrong. Plus, the > bug only shows up when selecting certain filenames. Nearest I can speculate, > choose.files becomes confused after a filename that has capital letters and > numbers has been chosen. Sounds crazy and I'd like to know more, but > choose.files is mostly .Internal code. > > First, create two CSV files. > > library(nlme) > data(Oats) > write.table(Oats,"c:/oats.csv",sep=",") > write.table(Oats,"c:/C20oats.csv",sep=",") > > Quit R and restart. Follow the steps below. Select oats.csv the first 4 times, > then select C20oats.csv and then select oats.csv . Notice how the filename is > corrupted the final time. > > > test <- function(){ > cat("press ENTER for a gui file selector\n") > gas.filename<-readline() > if(gas.filename=="") > gas.filename <- choose.files("*.csv",multi=FALSE,caption="Hi") > if(file.exists(gas.filename)){ > cat("Reading ",gas.filename,"\n") > DFgas<-read.csv(gas.filename) > } > else > cat("The file",gas.filename," cannot be found\n") > > > cat("press ENTER for a gui file selector\n") > nir.filename<-readline() > if(nir.filename=="") > nir.filename <- choose.files("*.csv",multi=FALSE, > caption="Choose one gas CSV file") > if(file.exists(nir.filename)){ > cat("Reading ",nir.filename,"\n") > DFnir<-read.csv(nir.filename) > } > else > cat("The file", nir.filename," cannot be found\n") > > } > > > test() > press ENTER for a gui file selector > > Reading C:\oats.csv > press ENTER for a gui file selector > > Reading C:\oats.csv > > test() > press ENTER for a gui file selector > > Reading C:\oats.csv > press ENTER for a gui file selector > > Reading C:\oats.csv > > test() > press ENTER for a gui file selector > > Reading C:\C20oats.csv > press ENTER for a gui file selector > > The file C:\oats.csv\sv cannot be found > > > > ______________________________________________ > R-devel@stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-devel > >-- Brian D. Ripley, ripley@stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595