Я создаю пакет R, одним из результатов которого является отчет в формате HTML. Я хочу использовать Rmd-файл для его создания, который будет установлен внутри пакета.
После этой темы я понял, как использовать 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 вел себя как любая другая экспортируемая функция в пакете, которая может использовать неэкспортированные функции из того же пакета.
Если известно, каков наилучший метод для таких случаев?