使用内联R块有条件地输出段落

时间:2016-02-02 09:50:44

标签: r knitr r-markdown

在我的knitr支持中,我有几个段落仅在满足某些条件时才相关。

将内联r ifelse(...中的所有内容包装得很快就会被扼杀。

所以我尝试使用像这样的代码块

```{r conditional_block, eval=nrow(data)>0, results="asis"}

print("For theese `r nrow(data)` people, the mean salary is `r paste(round(mean(data$sallary),2))` dollars per year")
```

我尝试了printpastecat。我对结果asismarkup感到厌倦。但输出总是 - ' raw'内联R代码逐字显示。

1 个答案:

答案 0 :(得分:3)

问题中显示的代码块的问题在概念上而不是技术上:块的内容被解释为R代码。在R上下文中使用knitr的内联输出语法既不可能也不必要。相反,应该使用普通的字符串函数来组成输出字符串:

```{r conditional_block, eval=nrow(data)>0, results="asis"}

cat(sprintf(
  "For these %d people, the mean salary is %.2f dollars per year.", 
  nrow(data), mean(data$salary))
  )
```