In my .Rprofile I have the following functions which display the current directory in the main R window title bar, and modify base::setwd() to keep this up to date. I like this because I can always tell where I am in the file system.

cd <- function(dir) {
 base::setwd(dir)
 utils::setWindowTitle( short.path(base::getwd()) )
}

short.path <- function(dir, len=2) {
   np <-length(parts <- unlist(strsplit(dir, '/')))
   parts <-rev( rev(parts)[1:min(np,len)] )
   dots <- ifelse (np>len, '...', '')
   paste(dots,paste(parts, '/', sep='', collapse=''))
}

utils::setWindowTitle(short.path(base::getwd()))
utils::assignInNamespace("setwd",
   function(dir){
       .Internal(setwd(dir))
       utils::setWindowTitle( short.path(base::getwd()) )
       },
   "base")

However, this causes errors in some cases where setwd is used by other functions, particularly example():

> library(HistData)
> example(Snow)
Error in setwd(olddir) : cannot change working directory
> traceback()
6: setwd(olddir)
5: open.srcfile(srcfile, first)
4: open(srcfile, first)
3: getSrcLines(srcfile, lastshown + 1, srcref[3L])
2: source(zfile, local, echo = echo, prompt.echo = paste(prompt.prefix,
      getOption("prompt"), sep = ""), continue.echo = paste(prompt.prefix,
getOption("continue"), sep = ""), verbose = verbose, max.deparse.length = Inf,
      encoding = encoding, skip.echo = skips, keep.source = TRUE)
1: example(Snow)
>

Questions:
*  Is there someway I can re-write these functions to avoid such problems?
* Is there someway I can 'hide' my custom functions like cd(), short.path() so they don't appear in the global
environment but are available in my R session?

thanks
-Michael

--
Michael Friendly Email: friendly AT yorku DOT ca Professor, Psychology Dept.
York University      Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street    http://www.math.yorku.ca/SCS/friendly.html
Toronto, ONT  M3J 1P3 CANADA

______________________________________________
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