我有一个像这样的R降价文件:
The following graph shows a histogram of variable x:
```{r}
hist(x)
```
我想介绍一个循环,所以我可以为多个变量做同样的事情。假设有这样的东西:
for i in length(somelist) {
output paste("The following graph shows a histogram of somelist[[" , i, "]]")
```{r}
hist(somelist[[i]])
```
这甚至可能吗?
PS:更大的计划是创建一个程序,该程序将遍历数据框并自动为每列生成适当的摘要(例如直方图,表格,箱形图等)。然后,该程序可用于自动生成降价文档,其中包含在查看第一个数据的数据时将进行的探索性分析。
答案 0 :(得分:40)
这可能是你想要的吗?
---
title: "Untitled"
author: "Author"
output: html_document
---
```{r, results='asis'}
for (i in 1:2){
cat('\n')
cat("#This is a heading for ", i, "\n")
hist(cars[,i])
cat('\n')
}
```
这个答案或多或少地来自here。
答案 1 :(得分:4)
如前所述,任何循环都需要在代码块中。为直方图提供标题可能更容易,而不是添加一行文本作为每个标题的标题。
```{r}
for i in length(somelist) {
title <- paste("The following graph shows a histogram of", somelist[[ i ]])
hist(somelist[[i]], main=title)
}
```
但是,如果您想创建多个报告,请查看this thread.
其中还包含指向this example.的链接 似乎在脚本中进行渲染调用时,环境变量可以传递给Rmd文件。
所以另一种选择可能是你的R脚本:
for i in length(somelist) {
rmarkdown::render('./hist_.Rmd', # file 2
output_file = paste("hist", i, ".html", sep=''),
output_dir = './outputs/')
}
然后你的Rmd块看起来像:
```{r}
hist(i)
```
免责声明:我没有对此进行测试。