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.

Reply via email to