Bastien writes: > Hi Rainer, > > Rainer M Krug writes: > >> I want to load some R code into org when using R with org (i.e. in >> ob-R.el) which would be part of org mode. Therefore I have two >> questions: > > I'm not sure I understand: why do you need to put R code in an > external file? For testing purpose? No - there is quite a bit of R code in ob-R.el which gives quite abit of options for customization. As R users are usually more comfortable with using R then elisp, I am moving the R code into external .R files which are loaded and the code in these is used for variable transfer and (planned) the wrapping when creating graphs. Fallbacks, i.e. default code stored in ob-R.el when the file can not be loaded, id=s in the process of being implemented. You can see how it looks in [1] where my changes are sitting. And I want to load this R code into R, controlled from org. Here is the relevant code: ,---- | (defun org-babel-expand-body:R (body params &optional graphics-file) | "Expand BODY according to PARAMS, return the expanded body." | (mapconcat 'identity | (append | (when (cdr (assoc :prologue params)) | (list (cdr (assoc :prologue params)))) | (list | " while ('org:functions' %in% search()) { detach(pos=grep('org:functions', search())) } | attach( what = NULL, name = 'org:functions' ) ") | (list | (format " userdir <- '%s' | for( f in dir(userdir, pattern='.R', full.names=TRUE) ){ try(source(f, keep.source = FALSE)) } " org-babel-R-directory-in-org)) | (list (format " .org.createEnvironment('%s')" org-babel-R-variable-environment-name )) | (org-babel-variable-assignments:R params) | (list body) | (when (cdr (assoc :epilogue params)) | (list (cdr (assoc :epilogue params))))) | "\n")) `---- > >> 1) Where can I put the R code? My idea would be to put it in >> ORGDIR/etc/R/ - would this be OK with the general philosophy of directory >> structures? >> >> 2) How can I get the ORGDIR under elisp, so that I can use it to load >> From ORGDIR/R/*.R ? > > I can't parse this too :) If that helps, please send a patch with > what you would do, and we'll discuss from the patch. I am using at the moment the following construct to get the directory I want: ,---- | (defvar org-babel-R-directory-in-org | (mapconcat 'identity | (append (butlast (split-string (locate-library "org") "/") 2) | '("etc" "R" "")) | "/") | "Original org directory from which the *.R files will be loaded. | This value should *not* be changed and is determined by the | installation location of org.") `---- > > Thanks, Thanks, Rainer Footnotes: [1] https://github.com/rkrug/orgmode-dev -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D): +49 - (0)3 21 21 25 22 44 email: Rainer@krugs.de Skype: RMkrug PGP: 0x0F52F982