在使用非导出功能时将RMD文件包含在R-package中

问题描述 投票:0回答:1

我正在创建一个R包,其功能输出之一是HTML报告。我想使用一个Rmd文件来创建它,该文件将安装在软件包中。

this thread之后,我了解了inst / rmd / file.Rmd的用法以及如何调用它(system.file("rmd", "report.Rmd", package = "thepackage"))。

我的包函数thepackage::run_report(params, dir)应该调用Rmd文件,发送参数,并最终将报告导出到指定目录。

在报告本身中,我想同时运行thepackage的导出函数和非导出的函数。

我简化了代码,但是符合想法。

  • 用于运行报告的导出功能:
run_report(params, dir = getwd()) {
  input <- system.file("rmd", "report.Rmd", package = "thepackage")

  rmarkdown::render(input = input,
                    params = params,
                    output_file = "report.html",
                    output_dir = dir,
                    clean = TRUE)
}
  • report.Rmd。 get_data()也是该包的导出功能:
---
title: "Comparison Report"
output: html_document
params:
  data: ""
  impute_func: ""

``` {r setup}
    knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE, cache = FALSE)
    data <- params$data
    impute_func <- params$impute_func
``` #

``` {r get_data}
    library(thepackage)
    dataset <- get_data(data)
    dataset_ready <- thepackage:::impute_values(data, impute_func)
``` #

``` {r summary}
    summary(dataset_ready)
``` #

我希望能够使用包的导出和非导出功能,而不必使用:::命令。总的来说,我希望RMD像包中的其他任何导出函数一样,可以使用同一包中的非导出函数。

如果知道,在这种情况下的最佳做法是什么?

r r-markdown r-package
1个回答
0
投票

最佳做法是仅使用导出的功能。如果发现需要使用内部功能,请仔细考虑您的设计:包的用户也有同样的需求吗?

因此,没有标准的方法可以执行您想要的操作,但是非标准方法有很多可能性。可能最简单的方法是在文档的开头添加一个代码块,以导入所需的每个内部函数,例如

```{r echo = FALSE}
impute_values <- thepackage:::impute_values
```
© www.soinside.com 2019 - 2024. All rights reserved.