循环在R降价

时间:2015-10-21 21:34:03

标签: r markdown r-markdown

我有一个像这样的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:更大的计划是创建一个程序,该程序将遍历数据框并自动为每列生成适当的摘要(例如直方图,表格,箱形图等)。然后,该程序可用于自动生成降价文档,其中包含在查看第一个数据的数据时将进行的探索性分析。

2 个答案:

答案 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)
```

免责声明:我没有对此进行测试。