我想自动标题和代码块在夸托。我有一个向量x<-c("title1","title2", "title3")和一个函数figure(x)。我想做的是使用夸托创建一个文档,模式为##title1,代码块为figure(“title 1”),##title 2,等等。而不必实际写出##r x[1]{r} figure(x[1])提前感谢!
x<-c("title1","title2", "title3")
figure(x)
r x[1]
{r} figure(x[1])
nzk0hqpo1#
按照以下步骤操作。创建夸托文件。给予起个名字。例如quarto_example.qmd运行以下代码
quarto_example.qmd
f <- function(x, my_file){ cat("## ", x, "\n```{r}\n", "figure(", x, ")\n```\n\n", sep="", append = TRUE, file = my_file) } vec <- c("title1", "title2", "title3") invisible(sapply(vec, f, my_file = "quarto_example.qmd"))
如果函数也改变了,你必须把它作为参数传递:
f <- function(x, fun, my_file){ cat("## ", x, "\n```{r}\n",deparse(substitute(fun)), "(", x, ")\n```\n\n", sep="", append = TRUE, file = my_file) } invisible(sapply(paste0("title", 1:5), f, figure, "quarto_example.qmd"))
请注意,代码是容易出错的。即运行它更多的时间将不断写入文件的代码。没有检查来确定文件是否已经有要编写的代码。您可以使用grep/grepl甚至手动进行检查
grep/grepl
1条答案
按热度按时间nzk0hqpo1#
按照以下步骤操作。
创建夸托文件。给予起个名字。例如
quarto_example.qmd
运行以下代码
如果函数也改变了,你必须把它作为参数传递:
请注意,代码是容易出错的。即运行它更多的时间将不断写入文件的代码。没有检查来确定文件是否已经有要编写的代码。您可以使用
grep/grepl
甚至手动进行检查