Sweave无法加载R包

时间:2011-12-16 18:43:58

标签: r textmate sweave

我将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) {{3} }和q1没有成功。

有人可以解释一下如何解决这个问题吗?(/ p>)

更新: 当我从R中扫描我的.Snw时,它会选择所有正确的文件夹。我不确定为什么从textmate那里做的事情做了不同的事情。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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

Sweave和R捆绑包都没有拿起我的本地存储库,因为选项--vanilla在两个捆绑包中都是默认设置。

这是我的解决方案:

R Bundle

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

    1. 在Textmate中,转到Bundles> Bundles Editor> Show Bundles Editor
    2. 点击Sweave包以展开
    3. 去Sweave,Typset&查看并向下滚动,直至看到以下行:echo -e "setwd('$SW')\nSweave('$TM_FILEPATH')" | R --vanilla --quiet | pre
    4. 将--vanilla改为--save
    5. 重新加载捆绑包
    6. 幸福的日子又回来了: - )

答案 1 :(得分:1)

尝试在位于"Rprofile.site"的{​​{1}}文件中添加这样的行。 (此处,$R_HOME/etc/是在有效$R_HOME会话中运行R.home()返回的目录。)

(您还希望从(a)您的主目录中移除(可能是暂时的)任何R文件;以及(b)当前目录(从中启动R / Sweave)。)

".Rprofile"

然后,如果这不能彻底解决问题(并且它确实对我有用),则Sweave然后将LaTeX应用于包含以下块的骨架.libPaths(c("/Dropbox/Toolbox/R/packages", .libPaths())) 文档。

.Snw

输出应该为您的问题来源提供一些有用的提示。