渲染 Quarto 文档在包中找不到 .R 文件

问题描述 投票:0回答:1

当我创建一个简单的 R 包时,我想在我的

test_doc.qmd
文件中使用在 .R 文件中创建的函数。问题是,在渲染 qmd 文件时,在包中创建该函数时找不到该函数。当我使用
devtools::load_all()
时它可以工作,所以我可以在代码块中找到该函数,而无需在控制台中手动运行它。我尝试在此 GitHub 存储库上创建一个可重现的示例:https://github.com/QuintenSand/test_package

因此,您应该首先克隆存储库,然后尝试运行 qmd 文件:

---
title: "Test quarto doc"
format: html
editor: visual
---

## Quarto

Test if the function will be rendered:

```{r}
test_function(TRUE)
```

函数 test_function 位于 test_function.R 文件中。渲染文档时返回以下错误:

processing file: test_doc.qmd
  |...................................                 |  67% [unnamed-chunk-1]


Quitting from lines 12-13 [unnamed-chunk-1] (test_doc.qmd)
Error in `test_function()`:
! could not find function "test_function"
                                                                                                            
Execution halted

但是当我跑步时

devtools::load_all()

devtools::load_all()
ℹ Loading test

代码块:

即使该函数不在全局环境中,您也可以看到它仍然有效。所以我想知道当文档中有 .R 自定义函数时我们如何渲染四开文档?

r devtools r-package quarto
1个回答
0
投票

如果您确实需要包裹,那么您应该

  1. 构建包并
  2. 在四开源中使用
    library()
    加载包。

假设该包将被称为

test
(基于您的
DESCRIPTION
文件):

---
title: "Untitled"
format: html
editor: visual
---

```{r}
library(test)
```

Test if the function will be rendered:

```{r}
test_function(TRUE)
```

或者,如果您只想使用特定文件中的函数,那么您可以将该文件的内容获取到您的 Quarto 源中。

---
title: "Untitled"
format: html
editor: visual
---

```{r}
source("test_function.R")
```

Test if the function will be rendered:

```{r}
test_function(TRUE)
```

如果

.R
文件位于子目录中(例如在示例存储库中),那么您需要将其包含在
source("R/test_function.R")
等路径中。

© www.soinside.com 2019 - 2024. All rights reserved.