Yes, this is different in RStudio, e.g. I had actually forgotten how brain-dead the CLI version is:
> file.choose() Enter file name: (Given that install.packages() fires up a Tcl/Tk chooser, users might reasonably expect us to do something at least slightly smarter). - Peter > On 18 Dec 2024, at 19:39 , Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > > I believe file.choose() remembers the last choice, and repeats that location > the next time you call it. This is true when it is called at top level or > from within a function. > > The first time you call it in a session, it will default to the current > working directory, but not after that. > > Front ends are allowed to replace the underlying function, so that may depend > on which front end you are using. I'm talking about R.app on a Mac. > > Duncan Murdoch > > On 2024-12-18 10:32 a.m., J C Nash wrote: >> I've been working on a small personal project that needs to select files for >> manipulation from >> various directories and move them around in planned ways. file.choose() is a >> nice way to select >> files. However, I've noticed that if file.choose() is called within a >> function, it is the >> directory from which that calling function has been invoked that is >> displayed by file.choose(). >> This is not altered if I setwd() within that function. Have I misunderstood >> something or is this >> an infelicity of file.choose(). sessionInfo() gives my system as >> R version 4.4.2 (2024-10-31) >> Platform: x86_64-pc-linux-gnu >> Running under: Linux Mint 22 >> I've a small example script. It actually helps to create nd1 and nd2 and >> give them some dummy >> files before testing. >> Suggestions welcome. >> John Nash >> # fcdir.R -- show directory being used by function that calls file choose >> cpath<-getwd() >> nd1<-paste0(cpath,"/nd1") >> nd2<-paste0(cpath,"/nd2") >> dir.create(nd1) >> dir.create(nd2) >> myfc<-function(){ >> cat("myfc working in ",getwd(),"\n") >> val<-file.choose() >> val >> } >> myfcd<-function(adir){ >> setwd(adir) >> cat("in myfcd, getwd() =", getwd(),"\n") >> val<-file.choose() >> val >> } >> print(getwd()) >> one<-myfc() >> cat("one=",one,"\n") >> setwd("nd1") >> print(getwd()) >> two<-myfc() # This opens file.choose() in nd1 >> cat("two=",two,"\n") >> setwd("..") >> print(getwd()) >> three<-myfcd("nd2") # But this does not >> cat("three=",three,"\n") >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide https://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide https://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. -- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23 Email: pd....@cbs.dk Priv: pda...@gmail.com ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.