使用 RStudio 编译 RMarkdown:为什么要阅读 .RProfile?
Compiling RMarkdown with RStudio: why reading .RProfile?
为什么 RStudio 在从 .Rmd 编译 .HTML 时试图读取我的 .RProfile
文件?
我的意思是,我按下 "Knit HTML" 按钮,然后它实际上尝试执行我在 .RProfile
中的所有内容,加载那里提到的每个库,然后尝试获取外部文件失败(我有一堆.RProfile
中提到的自编码函数,source('/Users/me/.rstudio-desktop/lib/lib.stocks.R')
等行
现在,我真的必须在编译(编织)期间将 .RProfile
从主目录移出,但可能应该有某种选择,或者什么?
如有任何建议将不胜感激:)。
OS X 10.8.5,RStudio 版本 0.98.1091
根据定义,这就是 .Rprofile
所做的。当 R 启动时,它会读取并执行该文件。 RStudio 启动一个新的 R 会话来编译 R Markdown 文档,R 会话读取 .Rprofile
,除非你告诉 R 会话不要这样做(例如通过 R --no-init-file
或 R --vanilla
),但是目前您无法真正控制 RStudio 如何启动 R 会话。我认为@rawr 提到的 if (interactive())
是一个非常好的主意,也是我经常使用的(我希望我的非交互式 R 会话是 "clean")。
我不熟悉在 RStudio 中使用项目,所以如果我误解了问题或做了一些愚蠢的事情,请教我。但听起来问题确实在于您的 .Rprofile 对于特定文档来说太大了。
如果您为给定文档创建新项目,它们将拥有自己的 .Rprofile,可以根据文档的需要进行定制。
更具体地说,我为我开始的每个新项目制作了一个模板 copy/paste。它只是一个看起来像这样的文件夹:
项目模板(文件夹)
- 数据(文件夹)
- 脚本(文件夹)
- 输出(文件夹)
- 文档(文件夹)
新 Project.Rproj
.Rprofile
.Rprofile 包括 tidyverse 和我经常使用的其他包,我会根据需要向其中添加其他包。当然,如果您正在从事一个需要大量大型 and/or 自制包的大型项目,并且您只是想在该项目中制作一个小文档,那么您将 运行 遇到这个问题再次.
我相信你很久以前就解决了这个问题,但我希望这能帮助任何人(像我一样)在进行故障排除时遇到这个页面。
为什么 RStudio 在从 .Rmd 编译 .HTML 时试图读取我的 .RProfile
文件?
我的意思是,我按下 "Knit HTML" 按钮,然后它实际上尝试执行我在 .RProfile
中的所有内容,加载那里提到的每个库,然后尝试获取外部文件失败(我有一堆.RProfile
中提到的自编码函数,source('/Users/me/.rstudio-desktop/lib/lib.stocks.R')
等行
现在,我真的必须在编译(编织)期间将 .RProfile
从主目录移出,但可能应该有某种选择,或者什么?
如有任何建议将不胜感激:)。
OS X 10.8.5,RStudio 版本 0.98.1091
根据定义,这就是 .Rprofile
所做的。当 R 启动时,它会读取并执行该文件。 RStudio 启动一个新的 R 会话来编译 R Markdown 文档,R 会话读取 .Rprofile
,除非你告诉 R 会话不要这样做(例如通过 R --no-init-file
或 R --vanilla
),但是目前您无法真正控制 RStudio 如何启动 R 会话。我认为@rawr 提到的 if (interactive())
是一个非常好的主意,也是我经常使用的(我希望我的非交互式 R 会话是 "clean")。
我不熟悉在 RStudio 中使用项目,所以如果我误解了问题或做了一些愚蠢的事情,请教我。但听起来问题确实在于您的 .Rprofile 对于特定文档来说太大了。
如果您为给定文档创建新项目,它们将拥有自己的 .Rprofile,可以根据文档的需要进行定制。
更具体地说,我为我开始的每个新项目制作了一个模板 copy/paste。它只是一个看起来像这样的文件夹:
项目模板(文件夹)
- 数据(文件夹)
- 脚本(文件夹)
- 输出(文件夹)
- 文档(文件夹) 新 Project.Rproj .Rprofile
.Rprofile 包括 tidyverse 和我经常使用的其他包,我会根据需要向其中添加其他包。当然,如果您正在从事一个需要大量大型 and/or 自制包的大型项目,并且您只是想在该项目中制作一个小文档,那么您将 运行 遇到这个问题再次.
我相信你很久以前就解决了这个问题,但我希望这能帮助任何人(像我一样)在进行故障排除时遇到这个页面。