这有点复杂,但我认为其他人也可能遇到这个问题。
四开本很棒,但一直面临一个问题,其中一个功能(quarto_render
) 无法呈现通过 .bat / .cmd 文件访问的脚本中的文档。如果我从 RStudio IDE 运行 R 脚本,没有问题,但通过 .bat 访问,是的。已经能够重现该问题,我将尝试概述该问题并希望有人能够提供解决方法。
不幸的是,重新创建需要一些时间,因为需要三个文件(我正在处理的实际项目使用五个单独的文件)。我使用的源项目文件夹名为 Test,直到文件 3 为止它才真正发挥作用。
文件 1 - test_document.qmd
创建一个新的 .qmd 文档(我称之为test_document.qmd
)。设置为 html 输出,并保留默认的 YAML 和其他文本。无需修改。
文件 2 - test_script.R
创建一个新脚本(test_script.R
)。通过以下方式...
library(quarto)
library(here)
quarto_render(here("test_document.qmd"))
运行时,这应该将 Test_document.qmd 呈现为文件位置中的单独 html 文件。
文件 3 - test.cmd - (这就是问题开始出现的地方)
当扩展名更改为 .bat 时,文本文件 (.txt) 应在命令提示符中呈现。 .cmd 文件中使用的代码附在下面,但必须编辑部分,因为它是基于工作的。
文件夹开始位置为“C:\Temp\Test”
{.cmd file}
cd /d %~dp0
if exist .\test_document.qmd "C:\Program Files\R\R-4.2.1\bin\x64\Rscript.exe" "C:\Temp\Test\test_script.R"
PAUSE
为了方便起见,将该文件保存到与其他两个文件相同的文件夹中。现在,当运行 test.cmd 文件(通过双击运行)时,命令提示符界面中会发生以下情况...
Output
{command prompt}
C:\Temp\Test>cd /d C:\Temp\Test\
C:\Temp\Test>if exist .\test_document.qmd "C:\Program Files\R\R-4.2.1\bin\x64\Rscript.exe" "C:\Temp\Test\test_script.R"
here() starts at C:/Temp/Test
Error in find_quarto() : Unable to find quarto command line tools.
Calls: quarto_render -> find_quarto
Execution halted
C:\Temp\Test>PAUSE
find_quarto 没有在 quarto 包中定义,尽管它确实出现在这里......
https://rdrr.io/github/quarto-dev/quarto-r/src/R/quarto.R https://rdrr.io/github/quarto-dev/quarto-r/src/R/quarto.R
这是我所能得到的。我想使用 .bat 文件,因为计划将该文件绑定到任务计划程序,以便安排我正在处理的实际项目每周运行一次左右。
Session_info 如果这有帮助......
> devtools::session_info()
─ Session info ──────────────────────────────────────────────────────────────────────────────────────────
setting value
version R version 4.2.1 (2022-06-23 ucrt)
os Windows 10 x64 (build 19042)
system x86_64, mingw32
ui RStudio
language (EN)
collate English_United States.utf8
ctype English_United States.utf8
tz America/New_York
date 2022-08-29
rstudio 2022.07.0+548 Spotted Wakerobin (desktop)
pandoc 2.18 @ C:/Program Files/RStudio/bin/quarto/bin/tools/ (via rmarkdown)
在批处理之外运行脚本
打开 RStudio IDE >
打开 test_script.R 文件 >
将光标放在脚本中选择 ctrl + alt + R 运行