1

我想在 knitr LaTeX doc (.Rnw) 中打印几句话,但前提是存在某些数据。这些句子大多是文本,但有一些 R。

例子:

A chi-squared test of your observed sizes has a p-value of
\Sexpr{format(calculated_chisq$p.value,digits=3,scientific=F)}.
A p-value below 0.05 means you should be concerned that your
groups are broken.  The lower the p-value, the more worried you
should be.

我尝试了一个带有 的块results='asis',但我认为该块被解释为 R。

我尝试过print()使用paste()R。它很难看,但它有效。但是,它会在其中添加似乎与 R 提示相对应的额外文本。

有没有很好的方法来做到这一点?

是相关的,但又有所不同。 是相同的,但没有答案。

4

1 回答 1

2

这个问题与那个问题密切相关,但我认为不是重复的:那里接受的答案转化为一个丑陋的\Sexp怪物,里面有一个条件。代码既不好读也不好写。

我自己的答案也不适用,因为 1)asis引擎不允许在文本中使用动态元素,以及 2)因为asisRNW 文档中的输出是灰色背景色。

我建议以下解决方案:

\documentclass{article}
\begin{document}

<<>>=
  x <- rnorm(1)
@

The value of $x$ is \Sexpr{x}.

<<echo=FALSE, results = "asis">>=
  pattern <- "This will only be displayed if $x$ is positive. The value of $x$ is %.2f."
  if (x > 0) cat(sprintf(pattern, x))
@

\end{document}

条件输出易于读写 ( pattern),动态元素通过sprintf.

于 2017-03-14T09:08:46.713 回答