gpt4 book ai didi

r - 在包中设置一个.Rmd,将文件写入当前项目工作目录

转载 作者:行者123 更新时间:2023-12-02 01:28:07 24 4
gpt4 key购买 nike

我有一个 .Rmd,我用它来报告许多不同 r 项目中的数据质量。然后它会拆分数据以删除具有缺失数据的子集,并在适当的地方插入缺失的结果。它将通过对“./Cleansed_data/”形式的文件路径的 write.csv 命令执行此操作

举个例子

  1. 打开 rstudio
  2. 转到 rhs 的“项目”菜单,然后选择并创建一个新的随心所欲地转换
  3. 转到 lhs 的“新脚本”下拉菜单,然后选择“新的.Rmd”
  4. 将输出更改为 .pdf 并点击确定
  5. 在最后 r block 包括 write.csv(mtcars, file = "mtcars.csv")
  6. 开始编织pdf' 按钮,将报告另存为 "writeFile.Rmd" 到您的项目工作目录,然后让它运行。

之前我将这个 .Rmd 从一个地方移动到另一个地方,但是现在我想将它构建到一个内部包中。我已将它(如文档所示)包含在包目录中的 inst/rmd 中。

  1. 为此构建或打开您有权访问的任何包
  2. 将文件添加到 inst/rmd(如果不存在则创建它)
  3. 重建包

然后我重建包并打开一个新项目。我加载我的新包并尝试通过 render 命令运行文档,使用 system.file 命令来定位 .rmd 就像这样

rmarkdown::render(input = system.file("rmd/writeFile.Rmd", package="MyPackage"), 
output_file = "writeFile.pdf", output_dir = "./Cars/)

这会将包构建中的报告呈现到 output_dir 的文件夹中,但是,这里有许多陷阱。首先,如果我省略 output_dir 参数,报告将呈现到包库中,通常位于 c 驱动器安装的库中。然而,这是可以修复的。

我无法解决的是,当 .Rmd 命中 write.csv() 时,(我相信).Rmd 将在当时的包环境,其工作目录是包库文件夹,不是当前项目目录。

问题

  1. 如何通知包中的模板 rstudio 项目的当前工作目录是什么?我隐约知道可能有一个 rstudio api 包?我几乎不了解它是什么,或者这是否会提供解决方案。
  2. 如果这完全不可能,或者可能只是一个非常糟糕的主意,我如何修改工作流以成功地将一些 r 对象输出检索到环境或工作目录中,在调用报告,而不必为每个不同的项目修改报告?此外,为什么这种方法特别糟糕?

最佳答案

为了关闭它:

我选择保留包中包含的 .Rmd。 .Rmd 需要移动并与包一起进行版本控制,因为它包含它们用来运行的功能。

为了满足我的要求,我设计了文档样式以通过表单中的 rstudio api 获取工作目录。

write.csv(mtcars, file = paste0(rstudioapi::getActiveProject(), "mtcars.csv"))

测试了@CL 的答案后,它也可以运行并且不依赖于 Rstudio 作为 IDE,但是我知道这些文档将

  1. 始终通过 rstudio IDE 访问
  2. 始终可以从特定项目中访问
  3. 我担心(虽然还没有测试过)设置文件的工作目录会被人为引导到不同的 WD 中,这可能会产生其他影响。这可能是我稍后可能想要包含的子文档,或者可能需要与包安装的文件路径相关的其他代码,而不是项目。通过这种方式,我认为(如果我对 Yuhui 的解释正确的话)r doc 仍然是它自己宇宙的中心。它只是将它的数据写入另一个数据:)

关于r - 在包中设置一个.Rmd,将文件写入当前项目工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com