宽控刀用R函数的提取代码

宽控刀用R函数的提取代码,r,knitr,sweave,R,Knitr,Sweave,我们可以使用formator::use(lm)获取lm函数的参数,并可以使用以下命令将输出重定向到knitr: <<test, code=formatR::usage(lm), eval=FALSE>>= @ 但无法确定如何控制knitr输出的宽度。要嵌入某个函数的“整洁”定义,请参见 = 插入函数(名称){ 读取块(行=捕获.输出(转储(名称“”),标签=粘贴(名称,'source',sep='-')) } @ = 插入_fun('lm') @ = @ 当输出变

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

<<test, code=formatR::usage(lm), eval=FALSE>>=
@
但无法确定如何控制
knitr
输出的
宽度。

要嵌入某个函数的“整洁”定义,请参见

=
插入函数(名称){
读取块(行=捕获.输出(转储(名称“”),标签=粘贴(名称,'source',sep='-'))
}
@
=
插入_fun('lm')
@
=
@


当输出变为latex时,有时会遇到让换行符保持在页边距内的问题。这是一个已知的问题,多个修复程序都有各种缺点。就像这一个,你可以在空白处得到完整的函数,但是没有漂亮的颜色。。。这完全是一个权衡和/或为解决方案付出努力的问题。:)

\documentclass{article}
\usepackage{listings}
\usepackage{incolata}
=
选项(宽度=60)

清单中的
body
是否为您提供了所需内容?您不喜欢
=
输出的哪些内容?感谢Dason和@JoshO'Brien的宝贵意见。您是否介意将您的评论更改为答案,并帮助我控制输出的宽度。Thanks@MYaseen208我会的,但我现在不知道如何控制宽度。谢谢@JoshO'Brien对我的问题的关注。我也尝试了不同的方法,但无法找到如何控制
=@
宽度
。但您的方法给出了列表中的代码。有什么想法吗?谢谢你的帮助。最后两个区块代码没有任何输出。我没有得到最后两个R区块代码的任何输出。是的,我这样做了,但没有得到这些R区块代码的任何输出。
=@
的目的是什么?
<<test, code=lm, eval=FALSE>>=
@
<<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)>>=
@
\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}