Как мне добавить пользовательские функции в файл RMardown? - PullRequest
1 голос
/ 19 июня 2019

У меня часто есть пользовательские функции, сохраненные в R-сценарии, которые я загружаю в среду, используя source(functions.R) в начале R-сценария.

Допустим, теперь я хочу создать документ RMarkdown, чтобы подвести итог некоторымиз моих результатов анализа, которые опираются на эти функции.Я не хочу копировать и вставлять эти функции в файл .Rmd (есть много функций, и я могу изменить их с течением времени).

Как загрузить эти функции в файл .Rmd?Прямо сейчас я просто использую source(functions.R) в фрагменте кода в файле .Rmd, но я не уверен, что это лучший метод.

Пример : у меня есть двафайлы: functions.R и report.Rmd

functions.R:

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

report.Rmd:

---
title: "Report"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
source('functions.R')
```

The sum of 4 and 5 is `r mySum(4, 5)`

Ответы [ 3 ]

2 голосов
/ 20 июня 2019

Не делай этого. Сделайте то, что предложил @ N.Williams: если у вас есть код, который стоит использовать повторно, поместите его в пакет.

Пакет на намного больше, чем скрипт, содержащий его функции. В документации сказано, что должна делать каждая из этих функций. Если в будущем вы решите изменить то, что они делают, вы будете знать, нарушаете ли вы неявный договор, содержащийся в документации. Если вы сделаете это, вам нужно будет проверить каждое использование этой функции, чтобы увидеть, имеет ли значение изменение.

0 голосов
/ 19 июня 2019

Поместите файл в ту же папку и назовите его так же, как в любом другом R-файле. Существует несколько вариантов объединения текста и вывода функции. paste0 является одним из них.

    ---
    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)))
    ```
0 голосов
/ 19 июня 2019

Согласно документации по источнику () , функция считывает, анализирует и оценивает свои входные данные. Итак, я думаю, что это то, что вам нужно, и я не знаю более эффективного способа загрузки и анализа другого сценария в файле .Rmd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...