[R] Query concerning working directory for file.choose()

J C Nash pro|jcn@@h @end|ng |rom gm@||@com
Wed Dec 18 16:32:55 CET 2024


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")



More information about the R-help mailing list