【问题标题】:knitr set_parent() always outputs NULL despite echo=FALSE尽管 echo=FALSE,knitr set_parent() 始终输出 NULL
【发布时间】:2013-01-23 19:25:26
【问题描述】:

我有一个主文档

\documentclass{article}

\begin{document}

<<main>>=
  a <- 20
  b <- 30
@

<<child-demo, child='child.Rnw', eval=TRUE>>=
@

\end{document}

以及相应的子文档

<<set-parent, echo=FALSE, cache=FALSE>>=
set_parent('mwe.Rnw')
@

<<child-code>>=
  a + b
@

处理文件时,我得到以下输出

a <- 20
b <- 30

## NULL

a + b
## [1] 50

使用\Sexpr{set_parent('mwe.Rnw')} 不会在输出中产生丑陋的##NULL,但我更喜欢通过块声明父级,因为我尝试只在块之外使用\Sexpr{}

【问题讨论】:

标签: r knitr


【解决方案1】:

考虑使用invisible 结束通话:

> invisible(1)
> invisible(1) == 1
[1] TRUE

因此,invisible(set_parent('mwe.Rnw')) 应该可以在不打印 NULL 的情况下工作。我认为这是set_parent的责任。

【讨论】:

  • 像魅力一样工作。到现在都错过了那个命令。几天后我会接受,以防万一有更好的答案。如果我忘记了,请随意戳我:)
  • 我已经在set_parent()中使用了invisible()github.com/yihui/knitr/blob/master/R/utils.R#L139我会调查一下。听起来evaluateknitr 中存在错误...谢谢!
  • 对不起,原来是我的bug;我应该在那里使用return(invisible(NULL)) 而不是return()。将在一分钟内修复。
  • 就像一个附加组件:&lt;&lt;set-parent, cache=FALSE, include=FALSE&gt;&gt;= 也可以抑制块的所有输出。
【解决方案2】:

虽然我在knitr 1.0.6 中有fixed the problem,但user946850 的回答是必不可少的,所以我建议将其作为答案。目前,你可以install开发版。

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 2020-06-27
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多