在Rstudio中设置Quarto文档的目录

11
我目前正试图从Rmarkdown转向Quarto。但是,我在设置正确的项目目录方面遇到了问题。我想问一下,在Quarto中是否有类似于Rmarkdown中这个选项的东西。 enter image description here 我的理解是,我需要制作一个.yml文件来指定我想要使用的目录,对我来说不是很直观。

1
你可以在一个新目录中创建一个新项目,并创建一个新的Quarto文件。 - Daniel_j_iii
1
是的,我知道,但我想知道是否有一种方法可以在文件本身中灵活地编辑Quarto文件渲染输出目录,而不使用单独的配置文件。 - Abdullah Abdelaziz
1
也许可以看一下 here 包,它可以将所有路径都相对于项目根目录。 - Richard Telford
已经过了几个月了,你有没有关于如何使这个工作的任何更新? - kputschko
我没有资格评论。这是一个链接,指向@pablo-velázquez引用的quarto文档:https://quarto.org/docs/books/book-output.html#output-path - undefined
5个回答

8

你可能想使用{here}包,它非常适用于在项目中处理文件路径。

假设我已经通过在Rstudio中依次执行文件 -> 新建项目 -> 新建目录 -> Quarto 项目创建了一个quarto项目,并在其中创建了一些文件夹和文件。因此,我的当前项目结构如下:

$
│ test_proj.Rproj
│ _quarto.yml
│
├─-data
│    mtcars.csv
│
└─-scripts
     delete.qmd

现在要从delete.qmd调用mtcars.csv文件,您可以执行以下操作。
---
title: "Test File"
format: html
---

## Quarto

```{r reading-data}

df <- read.csv(here::here("data/mtcars.csv"))
```

根据here::here()的文档,它将始终定位到与您的项目根目录相关的文件。因此,在以项目根目录(其中包含test_proj.Rproj)为基础的思考中,您可以在qmdR-script文件中将mtcars.csv的路径写为"data/mtcars.csv",而无论脚本文件在哪里,因为您正在相对于固定的项目根目录调用csv文件。如需了解更多关于{here}的信息,请参见此处

你如何使用这个目录结构和 server: shiny 发布到 RStudio Connect? - Giovanni Colitti
1
@GiovanniColitti,到目前为止我还没有使用过Rstudio Connect,所以在这种情况下无法多说。 - shafee

4
你可以使用 output-file:,例如:output-file: Projects/index.qmd,这将把当前文件保存到目录中,但需要一定的父/子级和绝对/相对路径基础知识。
目前这是一个空目录。

enter image description here

然后是一个简单的例子:

---
output-file: test/index.qmd
---

然后将文件呈现到指定目录。

enter image description here

请注意,我的delete.qmd文件保存在桌面上,然后我将其输出到/test目录中的另一个文件,并让Quarto将输出保存为另一个文件名。这不需要另一个YAML文件,我们使用内联YAML。

1
非常有帮助,谢谢!我的问题实际上不在于输出,而是关于调用或者调用文件。例如,我想把delete.qmd保存在一个叫做scripts的文件夹中,而这个scripts文件夹是我的R项目的一部分。假设我正在处理delete.qmd,并且我想通过编写read_csv("data/something.csv")来调用位于名为data的文件夹中的something.csv文件,该文件夹也在我的项目目录中。我希望这样做。从我看到的情况来看,除非data文件夹位于存储Quarto文件的同一文件夹中,否则不可能实现。 - Abdullah Abdelaziz

2
你可以在文档的YAML中添加全局的knitr选项
---
title: "My Document"
format: html
knitr:
  opts_knit:
    root.dir: "c:/my/project/directory"
---

2
我尝试了这个,但它没有起作用。仍需在块内使用 knitr::opts_knit$set(root.dir = '/path/to/dir') ... 有什么想法吗? - Dijkie85
显然相关文档:https://quarto.org/docs/books/book-output.html#output-path - undefined

0
有点晚了,但我是这样解决的:
  1. 直接从RStudio创建一个Quarto项目(转到文件:新建项目...命令,指定新目录,然后选择Quarto项目)。
  2. 当你的Quarto项目被创建时,它会有一个"_quarto" YAML文件。
  3. 用文本编辑器打开它,并在标题下面添加下一行: output-dir: output
  4. 在你的Quarto项目中创建一个名为"output"的新目录。
  5. 你的文件将呈现在新的"output"目录中!

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

0
另一个选择是使用:
quarto::quarto_render(here::here("path_to/doc.qmd"),
                      execute_dir = here::here(),
                      output_format = "all", as_job = TRUE)

我正在使用这个工具以多种格式输出结果,并发现设置execute_dir可以使文件路径正常工作。

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