如何在RMarkdown报告中显示内联r脚本?

时间:2016-02-21 18:08:41

标签: r r-markdown

假设命令不够重要,不能将它放在单独的行上,但我仍然希望它在结果中可见,我知道R Markdown中有` r inlinestr`,但我可以'将echo=T传递给它。我希望结果是这样的:

enter image description here

2 个答案:

答案 0 :(得分:3)

您可以使用反引号,它会为您提供等宽字体,但不会使用灰色背景阴影:

  

F。有一个`sum(is.na(df $ Height))=``r sum(is.na(df $ Height))`缺少高度值。

答案 1 :(得分:1)

我刚刚遇到了这个问题,我试图在两年前回答这个问题,并想到了一种方法,可以在单个内联语句中获取代码及其评估输出。我们只需要一个辅助函数。以下是一个例子。代码作为文本字符串输入,函数返回代码和评估代码的结果:

---
title: "RMarkdown teaching demo"
author: "whoever"
output: pdf_document
---

```{r}
fnc = function(expr) {
  paste(expr, " = ", eval(parse(text=expr)))
}

# Add some missing values
iris$Sepal.Length[c(3,5,10)] = NA
```

f. There are `r fnc("sum(is.na(iris$Sepal.Length))")` missing height values.

以下是输出。

enter image description here

它有效,但有两个问题。首先,代码不是等宽字体。其次,代码不会以灰色背景突出显示。

我以为我可以使用latex \texttt{}标签获取monospace字体。

```{r}
fnc = function(expr) {
  paste("\\texttt{", expr, " = ", eval(parse(text=expr)), "}", sep="")
}
```

这在交互式运行时会返回所需的字符串("\\texttt{sum(is.na(iris$Sepal.Length)) = 3}"),但在我尝试编织文档时会抛出以下错误:

! Extra }, or forgotten $.
<recently read> \egroup

l.163 ...texttt{sum(is.na(iris$Sepal.Length)) = 3}

我以为我可以使用\hl{}标记进行突出显示(在标头中也需要\usepackage{color, soul}):

```{r}
fnc = function(expr) {
  paste("\\hl{", expr, " = ", eval(parse(text=expr)), "}", sep="")
}
```

然而,再一次,这会引发错误:

! Argument of \SOUL@addmath has an extra }.
<inserted text> 
                \par 
l.161 ...re \hl{sum(is.na(iris$Sepal.Length)) = 3}

texttt{}\hl{}rmarkdown文档中与常规文本一起使用时,无问题。

所以,我不确定如何获得等宽字体或突出显示的文本,但至少这需要从单个内联R语句向代码+评估代码迈出一步。希望有更多关于语言计算知识并输出乳胶标记的人可以更深入地了解如何使其按照需要运行。