【发布时间】:2017-01-07 19:00:56
【问题描述】:
我想从一个 r 脚本生成一些报告。我想避免从 rmd 文件编译时需要的重复,如果可能的话,我想从 r 脚本本身生成报告。
该脚本有一个函数,它应该从数据帧列表中生成每个报告,其中每个报告代表一个数据帧的处理。我只是不明白如何分别生成每个报告。目前,报告在一个文件中显示所有数据框
原始脚本很长,所以我在下面提供了一个最小版本。
structure(list(a = structure(c(1L, 3L, 2L), .Label = c("boo",
"saa", "yaew"), class = "factor"), b = structure(c(2L, 3L,
1L), .Label = c("mfds", "shu", "ren"), class = "factor"), c = structure(c(2L,
1L, 3L), .Label = c("22", "23", "5345"), class = "factor")), .Names = c("a",
"b", "c"), row.names = c(NA, -3L), class = "data.frame")
ReportOp<-function(n) {
this_is_a_name <- n;
this_is_my_data <- ldf[[n]]
#' ---
#' author: Me
#' date:
#' ---
#+results='asis', echo=FALSE
knitr::kable(this_is_my_data, digits = 2)
#'
}
目前,我只是使用 R 工作室中的compile notebook 按钮生成包含所有内容的报告。
我尝试在上述脚本上使用knitr::spin,如下从一个单独的文件:
library(knitr)
o=spin('/Users/sebastianzeki/Desktop/UntitledTBB.R')
knit2html(o,output="/Users/sebastianzeki/Desktop/out.html")
但我只得到一份报告而不是三份。
【问题讨论】:
-
我为此目的使用了一个参数化的 R 降价文档,然后使用
rmarkdown::render()的包装器渲染报告迭代参数组合(使用lapply、map、do或任何适合的你的幻想)。 -
@Jake Kaupp - 你的意思是我应该在 names(x) 之后插入 rmarkdown::render() 吗?我不明白的是要在降价文档中放什么......困惑......
-
1.使用 YAML 中的参数创建一个 report.rmd。报告应根据您的选择调用主数据集和参数子集。 2. 使用
rmarkdown::render()通过apply系列使用您的参数选择呈现report.rmd(或编写一个包装器并使用apply)。我建议阅读rmarkdown::render()的文档以对所有内容进行排序。 -
@Jake Kaupp。问题是参数发生了变化,所以我有点希望我可以直接从函数输出,而不需要创建 .rmd 文件。
-
您将创建一个降价文件并通过
render()将参数传递给该文件
标签: r