【问题标题】:Compiling RMarkdown with RStudio: why reading .RProfile?使用 RStudio 编译 RMarkdown:为什么要阅读 .RProfile?
【发布时间】:2015-04-20 15:29:10
【问题描述】:

为什么 RStudio 在从 .Rmd 编​​译 .HTML 时会尝试读取我的 .RProfile 文件?

我的意思是,我按下“Knit HTML”按钮,然后它实际上尝试执行我在.RProfile 中的所有内容,加载那里提到的每个库,然后尝试获取外部文件失败(我有一堆 self -.RProfile 中提到的编码函数,source('/Users/me/.rstudio-desktop/lib/lib.stocks.R') 等行。

现在,我确实必须在编译(编织)期间将.RProfile 从主目录中移出,但可能应该有某种选项,或者其他什么?

如果有任何建议将不胜感激:)。


OS X 10.8.5,RStudio 版本 0.98.1091

【问题讨论】:

  • 我真的没有一个好的答案,但解决方法可能是if (interactive()) {## do things for normal r session} else {do other things for non-interactive session, ie, knitr compiling} 哦,把它放在你的 .rprofile 中,忘了那部分
  • 谢谢@rawr,这行得通:)。不过还是很有意思,为什么一开始就这么做……
  • 不确定 knitr 文档是新的 r 会话还是只是创建了一个新环境,但无论哪种方式 r 都正常启动,这意味着它会读取您的 .rprofile 并执行其中的任何操作第一的。我以为您可以在 engine.opts 块选项中传递 --vanilla,但看起来并非如此

标签: r rstudio knitr


【解决方案1】:

这就是.Rprofile 的定义。当 R 启动时,它会读取并执行该文件。 RStudio 启动一个新的 R 会话来编译 R Markdown 文档,并且 R 会话读取 .Rprofile,除非您告诉 R 会话不要这样做(例如通过 R --no-init-file 或 R --vanilla),但目前您无法真正控制如何RStudio 启动 R 会话。我认为@rawr 提到的if (interactive()) 是一个非常好的主意,也是我经常使用的(我希望我的非交互式 R 会话是“干净的”)。

【讨论】:

    【解决方案2】:

    我是在 RStudio 中使用项目的新手,所以如果我误解了这个问题或做了一些愚蠢的事情,请告诉我。但听起来问题实际上是您的 .Rprofile 对于特定文档来说太大了。

    如果您为给定文档创建一个新项目,它们将拥有自己的 .Rprofiles,可以根据文档的需要进行定制。

    更具体地说,我制作了一个模板,我只是为我开始的每个新项目复制/粘贴。它只是一个看起来像这样的文件夹:

    项目模板(文件夹)

    • 数据(文件夹)
    • 脚本(文件夹)
    • 输出(文件夹)
    • 文档(文件夹) 新项目.Rproj .Rprofile

    .Rprofile 包括 tidyverse 和我经常使用的其他包,我根据需要添加其他包。当然,如果您正在处理一个需要大量大型和/或自制软件包的大型项目,而您只是想在该项目中制作一个小文档,那么您将再次遇到该问题。

    我确信您在很久以前就已经解决了这个问题,但我希望这可以帮助任何(像我一样)在故障排除时遇到此页面的人。

    【讨论】:

      猜你喜欢
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2018-02-15
      • 2021-07-30
      • 2014-07-28
      • 2010-10-03
      相关资源
      最近更新 更多