gpt4 book ai didi

r - 使用循环在 R markdown 中生成选项卡

转载 作者:行者123 更新时间:2023-12-04 12:26:20 25 4
gpt4 key购买 nike

在带有 html 输出的 R Markdown 文档中,我可以创建带有标题和图像的选项卡,如下所示:

```{r}
print.img <- function(img, caption = ''){
cat('![', caption, '](', img, ')')
}
folder <- '/Users/U77549/Desktop/'
require(magrittr)
```


## Some Tabs
###{.tabset}
#### Tab 1
```{r, results = 'asis'}
paste0(folder, 'a', '.png') %>% print.img
```

#### Tab 2
```{r, results = 'asis'}
paste0(folder, 'b', '.png') %>% print.img
```

但是如果我想迭代生成一堆标签怎么办?这是我的尝试。
```{r }
make.tabs <- function(title, image){
catx <- function(...) cat(..., sep = '')
for(i in seq_along(title)){
catx('#### ', title[i], '\n')
catx("```{r, results = 'asis'}", '\n')
catx("paste0(folder, '", image[i], "', '.png') %>% print.img", '\n')
catx('```', '\n\n')
}
}
```
## Some Tabs
###{.tabset}
```{r, results = 'asis'}
make.tabs(title = c('Tab 1', 'Tab 2'), image = c('a', 'b'))
```

但这不起作用。而不是实际显示图像它只显示例如 {r, results = 'asis'} paste0(folder, 'a', '.png') %>% print.img在选项卡中。有没有办法使这项工作?

最佳答案

这不起作用,因为 knit只通过一次你的代码来解释它。在你的写作方式中,你需要编织两次。第一次创建新块,第二次运行这些新块。仅使用一个文件是不可能的。相反,您可能想要使用普通的 R 脚本来构建您的 Rmd 来编织。

经典创建 Rmd 以进行渲染的 R 文件:

# Function to create multiple tabs
make.tabs <- function(title, image){
res <- NULL
for(i in seq_along(title)){
res <- c(res, '#### ', title[i], '\n',
"```{r, results = 'asis'}", '\n',
"paste0(folder, '", image[i], "', '.png') %>% print.img", '\n',
'```', '\n\n')
}
return(res)
}

# Create the Rmd to knit
cat(
'---
title: "Untitled"
author: "author"
date: "2017-10-23"
output: html_document
---
## Some Tabs
###{.tabset}

```{r}
library(dplyr)
```

',
make.tabs(title = c('Tab 1', 'Tab 2'), image = c('a', 'b')),
sep = "",
file = "filetoknit.Rmd")

# Render the Rmd created into html here
rmarkdown::render("filetoknit.Rmd")

这是创建的输出 Rmd 文件 (filetoknit.Rmd):
---
title: "Untitled"
author: "author"
date: "2017-10-23"
output: html_document
---
## Some Tabs
###{.tabset}

```{r}
library(dplyr)
```

#### Tab 1
```{r, results = 'asis'}
paste0(folder, 'a', '.png') %>% print.img
```

#### Tab 2
```{r, results = 'asis'}
paste0(folder, 'b', '.png') %>% print.img
```

关于r - 使用循环在 R markdown 中生成选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46877451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com