Sweave can't load R packages

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?


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

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

  • In Textmate go to Bundles>Bundles Editor>Show Bundles Editor
  • Click on Sweave bundle to expand
  • 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 echo -e "setwd('$SW')nSweave('$TM_FILEPATH')" | R --vanilla --quiet | pre
  • Change --vanilla to --save
  • Reload bundle
  • Happy days are back again :-)


    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.

    链接地址: http://www.djcxy.com/p/56742.html

    上一篇: 包与受Java保护的反射保护

    下一篇: Sweave无法加载R软件包