这有点复杂,但我想其他人可能也有这个问题。
Quarto非常棒,但是遇到了一个问题,一个函数(quarto_render
)无法在通过. bat/. cmd文件访问的脚本中呈现文档。如果我从RStudio IDE运行R脚本,没有问题,但是通过. bat访问,是的。已经能够重现这个问题,我将尝试概述这个问题,希望有人能提供解决方法。
不幸的是,由于需要三个文件(我正在处理的实际项目使用了五个独立的文件),重新创建它需要一些时间。我正在使用的源项目文件夹名为Test,直到文件3才真正起作用。
- 文件1-测试文档. qmd**
创建一个新的. qmd文档(我称之为我的test_document.qmd
)。设置为html输出,并保留默认的YAML和其他文本。无需修改。
- 文件2-测试脚本. 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文件(通过双击运行)时,命令提示符界面中会出现以下情况...
- 产出**
{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
这是我所能得到的。我想使用. 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〉
打开测试脚本. R文件〉
光标在脚本中时,选择cntrl + alt + R运行
2条答案
按热度按时间eanckbw91#
经过一些实验,我能够想出一个两步的过程来解决从. cmd文件运行Rscript时的
quarto_render
问题。注解掉
quarto_render()
,因为此函数将被移动到. cmd文件中。要从命令行渲染一个四开文档,我发现我需要直接访问quarto.cmd。
在我的. cmd文件测试中看起来是这样的...
我发现这适用于我的工作流程,从命令行渲染四开文档,并认为它可能对其他人有用。
两个来源对拼凑这个解决方案非常有帮助...
Command prompt won't change directory to another drive
https://community.rstudio.com/t/bash-quarto-command-not-found/144187
最后,渲染完quarto文件后,运行Rscript的其余部分。
我已经在"任务调度器"应用程序中调度了这些操作,首先调度四分渲染操作,然后调度其余脚本。
希望这对其他人有帮助!
w41d8nur2#
要保存两个文件,可以执行以下操作:
如果您的路径中没有夸托,则可能需要