Sweave无法加载R软件包

我将R升级到v2.14.0,随着升级,我决定将标准软件包存储库移到Dropbox,这样便携式计算机和桌面计算机始终保持同步。 我把我的R_LIBS=/Dropbox/ToolBox/R/packages.Renviron当打开Rstudio或R.app(MAC),我得到了下面的命令:

> 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

但是当我在.Snw(Textmate + Sweave)中运行相同的命令时,我得到:

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

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

正如你从上面看到的,当我从Sweave调用R时,它只会选择标准的存储库。我创建了Renviron.siteRprofile.site ,读取help(Startup)类似问题q1和q2没有成功。

任何人都可以帮我解释一下如何解决这个问题吗?

更新:当我从R中发出我的.Snw文件时,它会提取所有正确的文件夹。 我不知道为什么什么时候从textmate做了一些不同的事情。

有任何想法吗?


感谢乔希,我意识到问题不在于R本身,而在于文本。

Sweave和R bundles都没有选择我的本地存储库,因为选项--vanilla在这两个包中默认设置为。

这里是我的解决方案:

R捆绑

  • 打开终端并转到$ HOME / Library / Application Support / TextMate / Pristine Copy / Bundles
  • Type >mate R.tmbundle这将直接在>mate R.tmbundle打开R bundle
  • 在支持文件夹中有一个名为tmR.rb的文件
  • 向下滚动,直到找到以下行: stdin, stdout, stderr, pid = my_popen3("R --vanilla --slave --encoding=UTF-8 2>&1")
  • 删除 - 选择并保存
  • Sweave Bundle

  • 在Textmate中转到Bundles> Bundles Editor> Show Bundles Editor
  • 点击Sweave包展开
  • 转到Sweave,Typset&View并向下滚动,直到看到以下行: echo -e "setwd('$SW')nSweave('$TM_FILEPATH')" | R --vanilla --quiet | pre echo -e "setwd('$SW')nSweave('$TM_FILEPATH')" | R --vanilla --quiet | pre
  • 改变 - 支持 - 保存
  • 重新加载捆绑
  • 快乐的日子又回来了:-)


    尝试在你的位于$R_HOME/etc/中的"Rprofile.site"文件中放入这样一行。 (这里, $R_HOME是在活动的R会话中运行R.home()返回的目录。)

    (您也可以从(a)您的主目录;(b)当前目录(从中启动R / Sweave)中删除(可能是暂时的)任何".Rprofile"文件。)

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

    然后,如果这不能直接解决问题(它确实对我.Snw ),Sweave,然后将LaTeX应用到包含以下块的骨架.Snw文档。

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

    输出应该提供一些有用的提示来解决问题的根源。

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

    上一篇: Sweave can't load R packages

    下一篇: Rendering a partial from a ruby script or console