我想在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.
我用R.尝试了print()
和paste()
这很丑陋,但它确实有效。但是,它会添加额外的文本,似乎与R提示符相对应。
有一个很好的方法吗?
答案 0 :(得分:1)
这个问题与that question密切相关,但我认为不重复:那里接受的答案会转化为一个内部有条件的丑陋\Sexp
怪物。代码既不易读也不易写。
My own answer也不适用,因为1)asis
引擎不允许文本中的动态元素和2)因为asis
的输出获得灰色背景颜色RNW文件。
我建议采用以下解决方案:
\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
插入。