Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sweave can't load R packages

Tags:

r

textmate

sweave

I upgraded R to v2.14.0 and along with the upgrade I decided to move the standard package repository to Dropbox so laptop and desktop are in sync all the time. I set my R_LIBS=/Dropbox/ToolBox/R/packages in .Renviron and when open Rstudio or R.app (mac) I get the following commands:

> Sys.getenv("R_LIBS")
[1] "/Dropbox/Toolbox/R/packages"

> .libPaths()
[1] "/Dropbox/Toolbox/R/packages"      
[2] "/Library/Frameworks/R.framework/Versions/2.14/Resources/library"
[3] "/Applications/RStudio.app/Contents/Resources/R/library

but when I run the same commands in a .Snw (Textmate+Sweave) I get:

> Sys.getenv("R_LIBS")
[1] ""

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.14/Resources/library"

As you can see above when I invoke R from Sweave it only picks up the standard repository.I have created Renviron.site, Rprofile.site, read help(Startup) following similar questions q1 , and q2 with no success.

Could anybody shed me some light (step by step) on how to fix this issue please?

Update: When I sweave my .Snw from within R it picks up all the right folders. I am not sure why when is done from textmate does something different.

Any ideas?

like image 821
Altons Avatar asked Dec 16 '11 18:12

Altons


2 Answers

Thanks to Josh I realised that the problem was not on R itself but in textmate.

Neither of Sweave and R bundles were picking up my local repository due to option --vanilla was set on as default in both bundles.

Here it is my solution:

R Bundle

  1. Open terminal and go to $HOME/Library/Application Support/TextMate/Pristine Copy/Bundles
  2. Type >mate R.tmbundle this will open the R bundle directly in textmate
  3. In the support folder there is a file called tmR.rb
  4. Scroll down until you find this line: stdin, stdout, stderr, pid = my_popen3("R --vanilla --slave --encoding=UTF-8 2>&1")
  5. Remove --vanilla option and save

Sweave Bundle

  1. In Textmate go to Bundles>Bundles Editor>Show Bundles Editor
  2. Click on Sweave bundle to expand
  3. Go to Sweave, Typset & View and scroll down until you see the following line:echo -e "setwd('$SW')\nSweave('$TM_FILEPATH')" | R --vanilla --quiet | pre
  4. Change --vanilla to --save
  5. Reload bundle

Happy days are back again :-)

like image 68
Altons Avatar answered Sep 27 '22 16:09

Altons


Try putting a line like this in your "Rprofile.site" file, located in $R_HOME/etc/. (Here, $R_HOME is the directory returned by running R.home() in an active R session.)

(You'll also want to remove (perhaps temporarily) any ".Rprofile" files from: (a) your home directory; and (b) the current directory (from which R/Sweave is being launched).)

.libPaths(c("/Dropbox/Toolbox/R/packages", 
            .libPaths()))

Then, if that doesn't solve the problem outright (and it sure works for me), Sweave and then apply LaTeX to a skeletal .Snw document that includes the following chunk.

<<>>=
R.home()
.libPaths()
@

The output should provide some useful hints to the source of your problem.

like image 35
Josh O'Brien Avatar answered Sep 27 '22 16:09

Josh O'Brien