提取R函数的参数以在knitr中使用

MYa*_*208 3 r sweave knitr

lm功能参数可以通过以下方式获得:

args(lm)
Run Code Online (Sandbox Code Playgroud)

产量

function (formula, data, subset, weights, na.action, method = "qr", 
    model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, 
    contrasts = NULL, offset, ...) 
NULL
Run Code Online (Sandbox Code Playgroud)

问题

如何获得:

lm (formula, data, subset, weights, na.action, method = "qr", 
    model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, 
    contrasts = NULL, offset, ...) 
Run Code Online (Sandbox Code Playgroud)

与每个参数的描述(不完整的帮助)Sweave或用于knitr.谢谢

编辑

使用@Ananda提供的funExtract功能,我非常接近我想要的结果.这是我的Rnw文件的代码与输出.

\documentclass{article}
\usepackage[T1]{fontenc}

\begin{document}

Arguments for lm

<< label = funExtract, echo = TRUE, results = "hide", tidy = FALSE >>=
funExtract <- function(Function, section = "Usage") {
  A <- deparse(substitute(Function))
  x <- capture.output(tools:::Rd2txt(utils:::.getHelpFile(help(A))))
  B <- grep("^_", x)                    ## section start lines
  x <- gsub("_\b", "", x, fixed = TRUE) ## remove "_\b"
  X <- rep(FALSE, length(x))
  X[B] <- 1
  out <- split(x, cumsum(X))
  out <- out[[which(sapply(out, function(x) 
    grepl(section, x[1], fixed = TRUE)))]]
  cat(out, sep = "\n")
  invisible(out)
}
@

\vspace{0.5cm}\\
funExtract function output
\vspace{0.25cm}\\
<< label = lm-usage, echo = FALSE, results = "asis" >>=
funExtract(lm, section="Usage:")
@

\vspace{0.5cm}\\
args function output
\vspace{0.25cm}\\
<< label = lm-args, echo = FALSE, results = "asis" >>=
args(lm)
@


\end{document}
Run Code Online (Sandbox Code Playgroud)

产量

在此输入图像描述

funExtract函数输出的问题

  1. 如何从funExtract函数获取高亮显示的输出作为其他代码?
  2. 如何删除部分标题表单funExtract函数输出?

Yih*_*Xie 6

usage()formatR包中有一个函数来捕获函数的参数.目前,您必须使用开发版本(> = 0.10.3).

对于knitr,我也有一个最近的更改(即请在Github上测试它的开发版本),这样你就可以更容易地显示函数使用:你可以使用新的chunk选项code将代码输入到一个块中.

将这两个部分组合在一起,您就可以编写如下代码块:

<<test, code=formatR::usage(lm), eval=FALSE>>=
@
Run Code Online (Sandbox Code Playgroud)

最近出现这些功能的原因是我偶然也需要它们.我想用语法高亮显示函数的用法.该解决方案可移植到knitr支持的所有文档格式,不限于Rnw.