如何使用Quarto调用外部R脚本中的source()函数?

3
我正在尝试使用Quarto将我的Rmarkdown文件转换为Quarto文档。在我的旧Rmarkdown文件中,我会使用source("R_datacleaning.R")source("R_Functions.R")来运行数据清理并加载一些函数。我还尝试过source(here("R_Functions.R")),但它也不起作用。R脚本和qmd文件位于同一目录中。
但我似乎无法在.qmd中使其工作。我收到的错误是Error: RStudio not running。我搜索了一下并查看了Quarto文档,但没有找到任何相关内容。我认为我可能没有完全理解RStudio中的Quarto环境。感谢您的任何帮助!
---
title: "quarto_test2"
format: html
---

```{r}
library(here)

source(here("R_Functions.R"))
```

错误信息是:

processing file: quarto_test2.qmd
  |..........                                                            |  14%
  ordinary text without R code

  |....................                                                  |  29%
label: unnamed-chunk-1
Quitting from lines 7-10 (quarto_test2.qmd) 
Error: RStudio not running

Execution halted

R_Functions.R与之前提到的quarto_test2.qmd在同一目录中。

版本信息

  • RStudio 版本为 2022.07.2
  • R 版本为 4.2.0
  • Quarto 版本为 1.1.245

请提供一个最小可重现的例子,说明你遇到了什么错误。同时,请提供你正在使用的quarto和Rstudio版本信息。 - shafee
我觉得没有必要包含一个reprex,因为我相当确定这不是我的代码的问题,而是source()函数在.qmd中不能正常工作的问题。可能是目录问题,或者与knitr有关,我还没有理解清楚。无论如何,如果您真的需要,我仍将更新主帖子并包含一个reprex。 - A. Piong
是的,请这样做。包括一个 reprex 总是一个更好的想法,即使它看起来微不足道(因为对你来说可能微不足道的事情,对别人来说可能并非如此)。无论如何,我已经在 qmd 文件中多次使用 source(),到目前为止都没有遇到问题 :) - shafee
谢谢,我已添加了reprex。我看到Quarto是在R版本4.2.1下构建的,但我的版本是4.2.0。不确定是否是这个原因?您是否使用过source()来读取.R文件?list.files()可以正确地指向我的目录,并打印出“quarto_test2.qmd”以及“R_Functions.R”。此外,无论是否包括here(),问题/错误都没有改变。 - A. Piong
是的。我在R文件上使用了“source”。顺便问一下,你的脚本“R_Functions.R”的内容是什么? - shafee
2个回答

4

我在PDF方面取得了成功

---
title: "source() external R script in Quarto, in PDF"
format: 
  pdf:
    toc: true # table of contents
---

一些文本...

```{r}
#| echo: true
#| eval: false # skip evaluation
#| file: C:/directory/script.R
```

一些文本...


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接