使用R Markdown文档作为函数的来源

我正在研究R Markdown来记录我经常使用的功能.我会将它们放入一个R Markdown文件来记录它们,然后能够阅读我在函数背后的想法,如果我几个月后再回来

我的问题是,如果我开始一个新的R项目,是否有可能获取r markdown文件并使用我创建的函数库,只需通过调用它们,如果我采购常规R文件.我真的不想保留两组函数文件

我很欣赏这可能是一个初学者的问题,但任何指向教程等的帮助将不胜感激

谢谢

最佳答案 正如评论中提到的,您可能应该为此目的创建一个包.但是如果你坚持在脚本中放置函数定义并使用RMarkdown文件来记录它们,那么使用knitr包中的read_chunk()可能就好了.

请注意,此方法与您请求的方法略有不同.您希望将markdown文件中的函数定义与文档一起使用.然后你想以某种方式将该文件导入R脚本以便使用该函数.我没有办法做到这一点(即使它可能).

我建议的替代方案是将函数定义放在自己的R脚本中,比如fun.R.然后Rmarkdown文件从fun.R读取函数定义并添加文档.如果你想在其他一些脚本中使用该函数,你可以简单地获取fun.R(而不是markdown文件).这仍然意味着您只需要维护一次函数定义的代码.

所以让我用一个例子来说明这一点.这很有趣.R:

## ---- fun
fun <- function(x) x^2

第一行是稍后将使用的标识符.降价文件如下:

---
title: "Documentation of fun()"
output: html_document
---

This documents the function `fun()` defined in `fun.R`.
```{r,cache = FALSE}
knitr::read_chunk("fun.R")
```

This is the function definition
```{r fun}
```

This is an example of how  to use `fun()`:
```{r use_fun}
fun(3)
```

第一个块使用knitr :: read_chunk读取fun.R.稍后,您可以定义一个空块,该块具有fun.R中使用的标识符作为其名称.这将表现为fun.R的内容直接写在此文件中.如您所见,您也可以在以后的块中使用fun().这是生成的html文件的屏幕截图:

《使用R Markdown文档作为函数的来源》

在您想要使用fun()的脚本中,您只需添加source(“fun.R”)来获取函数定义.

您还可以在单​​个R文件中具有多个函数,并仍然单独记录它们.只需在每个函数定义之前放置一个以## —-开头的标识符,然后创建引用每个标识符的空块.

这肯定比你要求的要复杂一些,因为它涉及两个文件而不是一个.但至少没有冗余

点赞