假设我有一个这样的data.frame:
Debts <- data.frame(name= c("Julia Fischer", "Arold Hass", "Michael Pfeifer", "Harry Frank"),
value= c(145, 136, 0, 100))我想在循环中生成PDF,而不是像这样打印:
for(i in 1:length(Debts$name)) {
L <- Debts[i,]
if(L[2] > 0){
print(str_c("Hi ", L[1], " you owe me ", L[2], " dollars."))
} else {
print(str_c("Hi ", L[1], " we are even."))
}
}使用R-markdown可以做到这一点吗?我该怎么做呢?我想,如果可能的话,我也可以在一个很好的模板中生成pdf。如果不能使用R-markdown,还有其他选择吗?
发布于 2021-02-18 20:01:45
我能够使用参数化的R Markdown报告做到这一点。它有一些限制,但它可以工作。基本上,在.Rmd的YAML头中添加参数时使用:
params:要使用的参数缩进如下所示。您也可以在参数中插入默认值(使用'3‘只是为了说明如何插入):
---
title: "Our accounting"
output: pdf_document
params:
n: 3
---在我们的例子中,我只使用了一个参数"n",因为我将使用它作为我的循环的索引。因此,在控制台中,您可以创建您的循环。在它内部,您可以使用rmarkdown::render()函数来调用.Rmd脚本并运行PDF。您还需要设置要使用"output_file=“创建的pdf的名称。如下所示:
for(i in 1:length(Debts$name)) {
name <- Debts$name[i]
rmarkdown::render("debts.Rmd",
params = list(N = i),
output_file = paste0(name, "-debts.pdf")
)
}在您的.Rmd文件中,您将看到如下内容:
Hi `r Debts$name[params$N]`, you owe me `r Debts$value[params$N]` dollars.https://stackoverflow.com/questions/66225016
复制相似问题