第二次评估knitr中的内联R代码

时间:2015-01-04 11:07:08

标签: r knitr

我正在尝试创建一个数学测试生成器,随机化测试中包含的哪些问题。我想在knitr中编写20个左右的问题,然后按一个按钮创建一个包含它们子集的pdf。我在Rstudio中使用R Markdown。我想象一个解决方案有点像:

```{r}
start<-"";end<-""

if(0<runif(1)){
start1<-"```{r, echo=F}" 
end1<-"```"
}
```

`r start1`
Question 1
`r end1`

但这会产生一个pdf:

```{r, echo=F}
Question 1
```

如何告诉knitr第二次评估内联代码?还是有一种更流畅的做事方式?

1 个答案:

答案 0 :(得分:1)

您可以使用cat

---
title: "Math test"
---

```{r Setup-Chunk, echo=FALSE}
q1 <- "Note down the Pythagorean theorem?"
q2 <- "Sum of angles of a triangle?"
q3 <- "What is the root of $x^2$?"
questions <- c(q1,q2,q3)
selection <- sample(length(questions), 2) # by altering 2 you pick the number of questions
```

```{r, results='asis', echo=FALSE}
out <- c()
for(i in selection){
  out <- c(out, questions[i])
}
cat(paste("###", seq_along(selection), out,collapse = "  \n"))
```

视觉:
enter image description here