使用模板开发R包.Rmd文件可以找到包函数

时间:2017-07-07 04:35:53

标签: r r-markdown r-package

我正在开发一个R包,我的一个包函数是generate_report(),它使用一个模板Rmd文件和函数参数生成一个带有rmarkdown的html报告:

#' generate report based on templete file
#' @import rmarkdown
#' @export
generate_report <- function(x, y){
  rmarkdown::render('templete.Rmd', envir = list(x = x, y = y))
}

这里是inst/templete.Rmd文件:(当编译包时,它将被移动到包的顶级文件夹:

---
title: "templete"
output: html_document
---

## Head 1

```{r}
print(x)
```

```{r}
print(y)
```

我的问题是,当包devtools::install()时,函数generate_report()找不到文件templete.Rmd,如何让函数以正确的方式找到这个templete.Rmd文件?< / p>

2 个答案:

答案 0 :(得分:0)

根据http://r-pkgs.had.co.nz/inst.html

,您的rmarkdown::render()来电需要使用system.file

答案 1 :(得分:0)

system.file是正确的方式,感谢@MrFlick和@Jonathan Carroll。这是我的最终代码:

generate_report <- function(x, y, output_dir){
      file <- system.file("templete.Rmd", package = 'mypackage-name')
      if (missing(output_dir)) {
         output_dir <- getwd()
      }
      rmarkdown::render(file, envir = list(x = x, y = y), output_dir = output_dir)
    }