r - 使用 data.table 对象生成动态 R-Markdown 块
问题描述
我想通过 R Markdown 中的 Species 循环来自动化此代码。
---
title: "R Notebook"
output:
html_document:
df_print: paged
---
```{r setup, echo=FALSE}
library(knitr)
library(data.table)
iris.dt <- data.table(iris)
iris.species <- stringr::str_to_title(as.character(unique(iris.dt$Species)))
```
### View by Species {.tabset .tabset-fade .tabset-pills}
#### Setosa
```{r}
iris.dt[Species == 'setosa']
```
#### Versicolor
```{r}
iris.dt[Species == 'versicolor']
```
#### Virginica
```{r}
iris.dt[Species == 'virginica']
```
我可以使用生成标签knit_expand
(实际上我的问题类似于这个Generate Dynamic R Markdown Blocks),但我很难显示其他输入,如 data.table。这是我的尝试:
### View by Species automated {.tabset .tabset-fade .tabset-pills}
```{r run-numeric-md, include=FALSE}
out = NULL
for (i in iris.species) {
out = c(out, knit_expand(text='#### {{i}}'))
}
```
`r paste(knit(text = out), collapse = '\n')`
这是笔记本的概述。
谢谢您的帮助。
解决方案
如果我还生成 R 块,它对我有用:
---
title: "R Notebook"
output:
html_document:
df_print: paged
---
```{r setup, echo=FALSE}
library(knitr)
library(data.table)
iris.dt <- data.table(iris)
iris.species <- as.character(unique(iris.dt$Species))
```
### View by Species automated {.tabset .tabset-fade .tabset-pills}
```{r run-numeric-md, include=FALSE}
out <- vector(mode = "character", length = length(iris.species))
for (i in iris.species) {
out[i] <- knit_expand(text = c("#### {{stringr::str_to_title(i)}}",
"```{r, echo = FALSE}",
"iris.dt[Species == '{{i}}']",
"```"))
}
```
`r paste(knit(text = out), collapse = '\n')`
推荐阅读
- excel - 从 Excel 工作表中获取值并将其用作 Azure 中的标记
- react-native - 关闭反应本机应用程序时运行清理
- r - R循环大数据
- python - 如何使用热键按字母顺序对树视图表中的数据进行重新排序
- python - 确定变量是python2.7中的str还是python3中的字节
- ios - Xcode 12.4 中未找到框架 FIRAnalyticsConnector
- javascript - 如何通过节点和javascript中的不和谐机器人代码将用户添加到私人频道?
- vb.net - 关闭和重新打开声明为公开的表单的正确方法是什么?
- angular - 错误:EACCES:权限被拒绝,取消链接“/Users/marina/Desktop/PO/angular-po/dist/angular-po/favicon.ico”
- python-3.x - 将存储桶从 S3 传输到 GCS 并在不先下载存储桶的情况下使用 python3 进行反向传输?