我想根据用户的输入创建一个不同的rmarkdown模板。就我而言,是一个描述数据集的文档。如果有人有20个变量,那么应该有20个带有这些变量名称的标题。然后它打开该模板以允许用户添加更多信息。
我的意思并不是parameterized reports。
是否可以使用sink()?
的组合我的想法是拥有一组函数,每个变量执行一些汇总, f.i.对于数值变量的平均值,中位数等,对于因子变量,是因子的概述。我可以编写所有这些函数,我可以制作一个rmarkdown文档,但我真正喜欢的是这样的。
数据集一
letters numbers factors
a 10 orange
b 3 green
c 6 verydarkblue
使用rmarkdown文件
This dataset has 3 variables with some properties
*information for author*
add information about where you found the data what the properties
are and add some background information to the variables.
\newpage
### letters
letters has [some code that executes summary function for letters]
### numbers
numbers has [some code for numeric variables]
如果变量的数量不同,模板会有所不同
答案 0 :(得分:1)
我可能会从knitr
包开始,它已经完成了你想做的一些事情。然后创建一个输出类型设置为"asis"
的代码块,以便告诉knitr
将结果直接放在输出文件中而不添加任何标记,然后您的代码可以插入相应的标记,只需循环通过数据集并为每列输出### columnname
,然后输入相应的摘要信息。
代码块可能类似于:
```{r, results="asis"}
for( i in seq_len(ncol(dataset)) ) {
cat("### ", names(dataset)[i], "\n\n")
if(class(dataset[[i]]) == 'numeric') {
cat(mean(dataset[[i]]),'\n')
} else if(class(dataset[[i]])=='factor') {
print(table(datset[[i]]))
} else {
cat('Something Else\n\n')
}
}
```