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.

Reply via email to