【问题标题】:Extracting Code of R function to be used in knitr with controlled width用于宽度受控的knitr中的R函数提取代码
【发布时间】:2015-06-02 16:30:06
【问题描述】:

我们可以使用formatR::usage(lm)获取lm函数的参数,并可以使用以下命令将输出重定向到knitr

<<test, code=formatR::usage(lm), eval=FALSE>>=
@

不知道有没有这样的功能可以让lm功能码重定向到knitr

已编辑

使用以下代码(如@JoshO'Brien 所建议)获得了lm 函数的代码,以在knitr 中使用:

<<test, code=lm, eval=FALSE>>=
@

但是不知道如何控制widthknitr 输出。

【问题讨论】:

  • body 能给你想要的吗?
  • &lt;&lt;test, code=lm, eval=FALSE&gt;&gt;= 的输出你不喜欢什么?
  • 感谢 Dason 和 @JoshO'Brien 对 cme​​ts 的帮助。您是否介意将您的 cmets 更改为答案并帮助我控制输出的宽度。谢谢
  • @MYaseen208 我会,但我没有立即看到如何控制宽度。
  • 感谢@JoshO'Brien 对我的问题感兴趣。我也尝试了不同的方法,但无法弄清楚如何控制knirtwidth&lt;&lt;test, code=lm, eval=FALSE&gt;&gt;= @ 的输出。

标签: r knitr sweave


【解决方案1】:

要嵌入一些函数的“整洁”定义,请参阅Yihui's self-explanatory existing code

<<insert-fun, echo=FALSE>>=
insert_fun = function(name) {
  read_chunk(lines = capture.output(dump(name, '')), labels = paste(name, 'source', sep = '-'))
}
@

<<insert-lm, echo=FALSE>>=
insert_fun('lm')
@

<<lm-source, eval=FALSE, tidy=TRUE, tidy.opts=list(width.cutoff=30)>>=
@

Example Rnw and Rmd Gist


当输出到 Latex 时,有时会出现让换行符保持在页边距内的问题。它是一个已知问题,具有多个具有各种缺点的修复程序。就像这个你在边缘内获得全部功能但没有漂亮色彩的地方......这完全是你在解决方案中付出的权衡和/或努力的问题。 :)

\documentclass{article}

\usepackage{listings}
\usepackage{inconsolata}

<<echo=FALSE>>=
options(width=60)

listing <- function(x, options) {
  paste("\\begin{lstlisting}[language=R,basicstyle=\\ttfamily,breaklines=true]\n",
    x, "\\end{lstlisting}\n", sep = "")
}
knit_hooks$set(source=listing, output=listing)

insert_fun = function(name) {
  read_chunk(lines = capture.output(dump(name, '')), labels = paste(name, 'source', sep = '-'))
}

@

<<insert-lm, echo=FALSE>>=
insert_fun('lm')
@

\begin{document}

<<lm-source, eval=FALSE, tidy=TRUE, tidy.opts=list(width.cutoff=50)>>=
@

\end{document}

【讨论】:

  • 感谢@Thell 的回答。但是您的方法在列表中给出了代码。任何想法。
  • 感谢@Thell 的帮助。最后两个块代码没有给出任何输出。
  • 我没有得到最后两个 R 块代码的任何输出。
  • 是的,我这样做了,但没有得到这些 R 块代码的任何输出。
  • &lt;&lt;lm-source, results="hide", tidy=TRUE, tidy.opts=list(width.cutoff=30)&gt;&gt;= @的目的是什么?
猜你喜欢
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2019-09-20
相关资源
最近更新 更多