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

标签 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 第二次计算内联代码?还是有更巧妙的做事方式?

最佳答案

您可以为此使用 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

关于r - knitr中内联R代码的第二次评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764887/

相关文章:

facebook - 从 R 访问 Facebook API 进行文本挖掘

r - 在 R/Rmarkdown 中同步两个传单 map

r - Brew 和 knit 一份 PDF 报告由带有特殊字符的变量分割 (å æ ø) - 编码问题

Rmarkdown 无法正确重现 bash 代码

r - 在 knitr 中的所有文本周围添加 div

r - 将 tapply 添加到列

r - 在 knitr 支持的文档中显示 html 表(通过 xtable)

r - 评估 YAML header 中的 R 代码

r - 如何在R中用一个case_when表达式改变两列?

r - 计算 r 中字符串中的位数