我应该如何将自定义函数源代码设置到RMardown文件中?

我应该如何将自定义函数源代码设置到RMardown文件中?,r,r-markdown,R,R Markdown,我经常在R脚本中保存自定义函数,并在R脚本的开头使用source(functions.R)将其加载到环境中 假设我现在想创建一个RMarkdown文档来总结一些依赖于这些函数的分析结果。我不想将这些函数复制粘贴到.Rmd文件中(有许多函数,我可能会随着时间的推移修改它们) 如何在.Rmd文件中加载这些函数?现在我只是在.Rmd文件的代码块中使用source(functions.R),但我不确定这是否是最佳实践 示例: 我有两个文件:functions.R和report.Rmd 职能.R: myS

我经常在R脚本中保存自定义函数,并在R脚本的开头使用
source(functions.R)
将其加载到环境中

假设我现在想创建一个RMarkdown文档来总结一些依赖于这些函数的分析结果。我不想将这些函数复制粘贴到.Rmd文件中(有许多函数,我可能会随着时间的推移修改它们)

如何在.Rmd文件中加载这些函数?现在我只是在.Rmd文件的代码块中使用
source(functions.R)
,但我不确定这是否是最佳实践

示例: 我有两个文件:
functions.R
report.Rmd

职能.R:

mySum <- function(a, b) {return(a + b)}

根据,函数读取、解析和评估其输入。所以,我想这就是你想要的,我不知道有什么更有效的方法来加载和解析.Rmd文件中的另一个脚本。

将该文件放在同一个文件夹中,并像在任何其他R文件中一样调用它。有几个选项可以组合文本和函数的输出<代码>粘贴0就是其中之一

    ---
    title: "test"
    output:
      html_document: default
      pdf_document: default
    date: "19 Juni 2019"
    ---

    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = TRUE)
    ```

    ```{r cars}
    library(shiny)
    source('functions.R')
    HTML(paste0("The sum of 4 and 5 is ", mySum(4,5)))
    ```

不要那样做。按照@N.Williams的建议去做:如果你有值得重复使用的代码,把它放在一个包里


包比包含其函数的脚本要多得多。文档说明了这些函数中的每一个应该做什么。如果将来您决定更改他们的工作,您将知道您是否违反了文档中包含的隐含合同。如果这样做,则需要检查该函数的每次使用,以查看更改是否重要

你可以制作一个包含你的功能和生活在你电脑上的软件包;那么这将只是一个
库(您的_包)
的问题。没错,但这与我现在使用
源代码(functions.R)
所做的并没有什么不同。我应该说我试图用
knitr::read_chunk()
找到一个解决方案,但这似乎不起作用。没错,但是我想说的是,这个包的好处是,你不必担心在不同的项目中包含你的函数的文件的路径。听上去,一旦这些函数已经很好地解决了,尤其是当这些函数在任何其他项目中变得有用时,将这些函数放在一个包中是正确的下一步。
    ---
    title: "test"
    output:
      html_document: default
      pdf_document: default
    date: "19 Juni 2019"
    ---

    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = TRUE)
    ```

    ```{r cars}
    library(shiny)
    source('functions.R')
    HTML(paste0("The sum of 4 and 5 is ", mySum(4,5)))
    ```