Wacek, this work for me. Takk! Mvh. Marie
On Wed, Mar 25, 2009 at 2:59 PM, Wacek Kusnierczyk < waclaw.marcin.kusnierc...@idi.ntnu.no> wrote: > Wacek Kusnierczyk wrote: > > hacking up on gabor's solution, i've created a trivial function that > > will allow you to access a file given a path relative to the path of the > > file calling the function. > > > > to be concrete, suppose you have two files -- one library and one > > executable -- located in two sibling directories, and you want one of > > them to access (e.g., source) the other without the need to specify the > > absolute path, and irrespectively of the current working directory. > > here is a simple example. > > > > mkdir foo/{bin,lib} -p > > > > echo ' > > # the library file > > foo = function() cat("foo\n") > > ' > foo/lib/lib.r > > > > echo ' > > # the executable file > > source("http://miscell.googlecode.com/svn/rpath/rpath.r") > > source(rpath("../lib/lib.r")) > > foo() > > ' > foo/bin/bin.r > > > > one thing i forgot to add: that contrarily to what gabor warned about > his solution, you don't have to have the call to rpath at the top level, > and can embed it in nested nevironments or calls; thus, the following > executable: > > echo ' > # the executable file > source("http://miscell.googlecode.com/svn/rpath/rpath.r") > (function() > (function() > (function() { > source(rpath("../lib/lib.r")) > foo() })())())() > ' > foo/bin/bin.r > > will still work as below. > > > now you can execute foo/bin/bin.r from whatever location, or source it > > in r within whatever working directory, and still have it load > > foo/lib/lib.r: > > > > r foo/bin/bin.r > > # foo > > > > (cd foo; r bin/bin.r) > > # foo > > > > r -e 'source("foo/bin/bin.r")' > > # foo > > > > (cd foo/bin; r -e 'source("bin.r")') > > # foo > > > > so the trick for you is to source rpath, and voila. (note, it's not > > foolproof; as duncan explained, such approach may not work in some > > circumstances.) > > > > does this address your problem? > > > > hilsen, > > vQ > > > > Gabor Grothendieck wrote: > > > >> See: > >> > >> https://stat.ethz.ch/pipermail/r-help/2009-January/184745.html > >> > >> On Tue, Mar 24, 2009 at 7:16 AM, Marie Sivertsen <mariesiv...@gmail.com> > wrote: > >> > >> > >>> Dear useRs, > >>> > >>> I have a collection of source file and some of these call others. The > files > >>> are distribute among a number of directories, and to know how to call > some > >>> other file they need to know what file is currently executed. > >>> > >>> As example, I have a file 'search.R' located in directory 'bin' which > needs > >>> to access the file 'terms.conf' located in the directory 'conf', a > sibling > >>> of 'bin'. I can have somethings like readLines('../conf/terms.conf') > in > >>> search.R, but this work only if search.R is executed from bin, when > getwd is > >>> 'bin'. But when search.R calls from the parent as bin/search.R or any > other > >>> derectory then R complains that it could not find the file > >>> '../conf/terms.conf'. > >>> > >>> So my questions is: how can the file search.R, when executied, > discover its > >>> own location and load terms.conf from <location of > >>> search.R>/../conf/terms.conf? the location of search.R can be > unrelated to > >>> the current directory. > >>> > >>> Mvh. > >>> Marie > > [[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.