knitr:将输出放在页面顶部

knitr:将输出放在页面顶部,r,knitr,R,Knitr,我正在用knitr生成一个HTML文件。我正在使用for循环进行几个绘图,这些绘图都写在这个循环中的HTML文件中。在此for循环中,将创建更多数据。 是否有可能将这些数据放在我创建的绘图之上 我写了一个简单的例子来更好地解释我的问题:有没有办法将a的输出放在页面顶部,在for循环中创建的输出之上 ```{r} a <- 10 for (x in 1:10) { a <- a*x cat(x, "\n") } cat(a) ``` 我的建议是使用两个独立的代码块来实现所需的结

我正在用knitr生成一个HTML文件。我正在使用for循环进行几个绘图,这些绘图都写在这个循环中的HTML文件中。在此for循环中,将创建更多数据。 是否有可能将这些数据放在我创建的绘图之上

我写了一个简单的例子来更好地解释我的问题:有没有办法将a的输出放在页面顶部,在for循环中创建的输出之上

```{r}
a <- 10
for (x in 1:10) {
 a <- a*x
 cat(x, "\n")
}
cat(a)

```

我的建议是使用两个独立的代码块来实现所需的结果。第一个区块将执行所有计算和图表生成,并将信息存储在变量中。然后在第二个块中,简单地输出变量的内容,以按所需顺序包括数据和绘图

使用上面的示例,您将有:

```{r}
a <- 10
result <- numeric(10)
for (x in 1:10) {
 a <- a*x
 result[x] <- x
}
```

```{r, echo = FALSE}
cat(a)
for (x in 1:10) {
     cat(result[x], "\n")
}
```

第一个块执行所有计算,但不显示任何内容。然后,第二个块以您想要的任何顺序输出信息。这里需要注意的重要一点是,在早期块中计算和存储的任何内容都可以在以后的块中使用,因此您可以将其扩展到文档的多个部分。

因此,您只需要在for循环的开头上方加上a=36288000的最终值?您可以使用块选项echo来指定哪些行您想要的输出的数量。或者,如果您还想显示代码,请将上面的代码与第二个块结合起来,而不是通过chunk选项eval=false执行第二个块,基本上就是我上面所说的。但是您需要chunk 1中的echo=FALSE选项,以便获得作者要求的结果——代码上方的结果。你的解决方案不能做到这一点。谢谢你,这似乎比我想象的要容易得多。我将在稍后的文档中对此进行修改。@Alex事实上,我们的答案之间存在根本性的差异。您需要重复代码,这会带来错误,并成为维护问题。第二,OP表示她希望在绘图之前输出代码,但对回显代码本身保持沉默。因此,我将echo=FALSE的选择留给了用户。@DaddytheRunner同意基本的区别。你在复制方面有很多优点。但OP表示“有没有办法把a的输出放在循环上方”,这是一个数字,而不是一个曲线图。这就是我的观点,我相信,这需要重复。