ottorino
2013-Jun-11 08:09 UTC
[R] How to "source" a R script in a parent/parallel directory (win/linux)
Dear R users, I would like to source a file independently from the operating system, but I cannot figure out how. I apologize for the verbosity of this mail, but English is not my mother tongue, so I cannot be concise and precise as I can be in my own language. I'm writing a script which will be run by some people who are not familiar with R. I already tried to teach them some rudiments, but unsuccessfully. They are only willing to double click an icon, and do not want to bother with many details. Consider the following situation, in where I have to run the very same script under Linux (for debugging) and under windows (for the users) On Win C:\\mypath\\user1 On my Linux box the same path is a samba share mounted on /mnt/mymountpt/user1/mywd The file I would like to run (say, RunThis.R) with a "source" command will be located at C:\\mypath\\PROGRAM /mnt/mymountpt/mypath/PROGRAM This location will never change, while "user1" will change each time, depending on the user or on the data to be processed. In other words each user will have his/her workspace under different and parallel directories. RunThis.R needs also some files and script which will be located under C:\\mypath\\PROGRAM\\Constants_and_Functions /mnt/mymountpt/mypath/PROGRAM/Constants_and_Functions My intent here is not to allow the users to modify RunThis.R and the file under Constants_and_Functions. I already tried this but you probably alredy imagine which were the problems. Under each "user?" there will be two dir, one with the raw data to be processed and another with the outcome of the analysis and the processed data. The unfamiliar "user?" will have to modify ONLY a small script (say, C:\ \mypath\\user1\\options.R, C:\\mypath\\user2\\options.R )in which he/she can modify some options (jpeg or pdf, in English or in Italian, csv or xls and so on.) I've found this solution to the problem, but I wonder if there are some more elegant alternatives. Each options.R file would finish with lines like the following if(Sys.info()[1] == "Linux"){ library(gdata) Fun.Const.Dir <- file.path("/mnt/mymountpt/mypath/PROGRAM/", "Constants_and_Functions") source(file.path("/mnt/mymountpt/mypath/PROGRAM", "RunThis.R")) } else { library(xlsReadWrite) Fun.Const.Dir <- file.path("C:\\mypath\\PROGRAM", "Constants_and_Functions") source(file.path("C:\\mypath\\PROGRAM", ""RunThis.R")) } My idea was that in R would have been possible to write something similar to what I write in latex with figures, i.e. \includegraphics{../PROGRAM/InsertThisFigure.pdf} so something like source("../PROGRAM/RunThis.R") would have been worked. but it didn't I tried a brute attempt like the following: step.back <- setwd("..") source(file.path(step.back, ""RunThis.R")) but without success. Any suggestion ? -- Ottorino-Luca Pantani, Universit? di Firenze Dip.to di Scienze delle Produzioni Agroalimentari e dell'Ambiente (DISPAA) P.zle Cascine 28 50144 Firenze Italia Debian 7.0 wheezy -- GNOME 3.4.2 GNU Emacs 24.3.50.1 (i486-pc-linux-gnu, GTK+ Version 3.4.2) ESS version 12.04-4 -- R 2.15.1