r - RMD:如何通过带有图和表的循环创建选项卡式块
问题描述
我有许多类似的数据集,我想在 RMD 文件中输出并将每个输出存储在特定选项卡中。
我创建了两个函数来生成一个表(使用 Kable)和一个 ggplot 的 plotly。为了避免重复将它们全部写出来(这将花费我很长时间),我尝试使用 cat() 函数编写一个循环来为我生成块并在正确的选项卡中输出表格和图表。
然而,虽然我制作的循环正确地生成了标题和选项卡,但它根本不输出图形或表格。事实上,它只是偶尔在第一个选项卡中输出一个图,即使这样也经常会弄乱整个块顺序。
请参见下面的示例:
```{r,fig.width=6,echo=FALSE,results =“asis”}
types <- c(“mpg”,”cyl”,”hp”)
Headers <- c(“header 1”,”header 2”)
for (i in headers) {
cat(paste0(“# “,i,”{.tabset} \n”))
for (j in types) {
cat(paste0(“# “,j,” \n”))
#this is where the problems begin
cat(“```{r} \n”)
plot(mtcars[j])
cat(" \n")
}
}
此外,就目前而言,基本 R 绘图和我制作的 ggplot/kable 函数似乎都不起作用。
我在这方面遇到了很多麻烦,并且迫切需要时间来提交这份报告,所以任何帮助都将不胜感激!如果有更好的方法来做到这一点,请告诉我!
谢谢您的帮助!
解决方案
通过以下调整,您的最小工作示例可提供所需的输出:
```{r, fig.width=6, echo=FALSE, results ="asis"}
types <- c("mpg","cyl","hp")
headers <- c("header 1","header 2")
for (i in headers) {
cat(paste0("## ",i,"{.tabset} \n"))
for (j in types) {
cat(paste0("### ",j," \n"))
plot(mtcars[j])
cat("\n\n")
}
}
```
请注意,选项卡必须比关联的选项卡集低一级(例如“级别”##
上的选项卡,级别上的选项卡###
)。此外,图形/表格必须在代码块中生成,而不是使用cat()
(至少在我的应用程序中是这种情况)传送到控制台。
推荐阅读
- php - Laravel:其他登录条件不起作用
- homebrew - 是否可以在 brew install 期间跳过 make test ?
- java - 运行“Clojure REPL”时出错:创建 RunProfileState 时出错
- mysql - 警告:#1300 尝试进入数据库时 itf 8 字符串无效
- json - 如何使用 spark scala 解析 Hive/Hbase 列中可用的嵌套 JSON
- express - 如何从两个集合中查找查询
- android - mobizen如何在三星上录制内部音频
- c - 如何将引用的参数作为单个参数处理?
- java - 在 Java 中,我怎样才能创建一个可以删除/添加字母或数字到某个字符串的方法?
- c++ - 为什么 C++ 代码有时会编译,有时会根据之前的编译给出编译错误?