r-RMarkdown中的参数化报告-如何要求参数一次



我目前正试图利用参数化报告,允许用户输入数据集(以及更多感兴趣的变量),然后将其输入到执行和输出各种分析的R脚本中。这些数据集将包含多个受试者的信息,目标是为数据集中的每个受试者生成一份报告。因此,我使用了一个for循环,该循环遍历数据集中的用户名(称为map)。然后我输入一个.Rmd文件,该文件负责大部分分析。for循环本质上是指50个左右受试者的.Rmd文件,并输出50个左右的报告。

for(id in unique(map$UserName)){

用于处理的#代码束

render(input="../lib/scripthtml.Rmd",output_file=paste0("报告",id,'.html'),"html_document",output_dir="Script_output",params="ask")}

我目前正在尝试使用Shiny中的参数化报告,以允许用户输入自己的数据集(地图)。因此,我指定了一个参数,并在渲染步骤中使用params=ask。主要问题在于:

由于渲染步骤在for循环下,因此它基本上是为每个主题运行的。因此,params-ask接口加载了50次,每次都要求用户提供他们的数据集。

我能避免这种情况吗?我如何让用户提供他们的数据集文件作为参数,然后将其用于所有50个报告?

您的所有变量都可能在render命令中传递,我目前为数千个报告执行此操作。

.Rmd模板的YAML

根据您的要求,这可能包括某些参数的默认值,为了便于说明,我在此处将它们保留为空字符串。

---
params:
var1: ""
var2: ""
var3: ""
---

正在加载数据集

在shine中,您可以对每个报告输入一次文件并重复使用。将数据帧的元素传递给下一节中的render命令。

用于在for循环中渲染的伪代码

for (i in 1:n) {
rmarkdown::render(
"template.Rmd",
params = list(
var1 = df$var1[i],
var2 = df$var2[i],
var3 = df$var3[i]
),
output_file = out_file
)
}

注意:在一个闪亮的应用程序中,您需要使用df()$var1,假设文件输入将成为一个反应函数。

然后,您可以使用params$var1约定在整个模板中使用这些参数。

最新更新