On Fri, 11 Jun 2010, Marcin Gomulka wrote:
AFAIK a script run through source() does not have any legit way to learn about it's own location.
You mean like 'test.R' being able to figure out that that is what it is called when it is invoked from source()?
cat("print(eval(sys.calls()[[1]][[2]]))",file='test.R') source('test.R')
[1] "test.R"
setwd('projects') source('../test.R')
[1] "../test.R"
source(list.files('..','test.R$',full=TRUE))
[1] "../test.R"
See ?sys.calls HTH, Chuck
I need this to make sure that the script will find its datafiles after I move the whole directory. (The datafiles are in the same directory.) Here is a hack I invented to work around it: print(getwd()) source_pathname = get("ofile",envir = parent.frame()) source_dirname = dirname(source_pathname ) setwd(source_dirname) print(getwd()) Question: Is there a better, cleaner way? Thanks, mrgomel [[alternative HTML version deleted]] ______________________________________________ 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.
Charles C. Berry (858) 534-2098 Dept of Family/Preventive Medicine E mailto:cbe...@tajo.ucsd.edu UC San Diego http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901 ______________________________________________ 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.