使用noamtools R软件包中的help_console函数获取R函数的帮助

时间:2014-11-07 15:15:23

标签: r github tex noamtools

我可以通过R 3.1.2软件包Yates函数FrF2获取帮助:

?FrF2::Yates

现在,我希望通过.tex包中的help_console函数获得noamtools R格式的帮助。我尝试了这段代码但没有工作:

help_console(topic="Yates", format = "latex")

help_console(topic="FrF2:Yates", format = "latex")
使用以下命令

noamtools R package can be obtained from github`:

library(devtools)
install_github("noamtools", "noamross")
library(noamtools)

任何帮助都将受到高度赞赏。感谢

1 个答案:

答案 0 :(得分:3)

此处的问题出在基础包help的函数utils中。您有两个包都导出具有相同名称的函数。具体来说,DoE.baseFrF2都导出Yates,因此help不会加载Rd文件;相反,它希望您在不同的文件之间进行选择。但help_console不知道如何处理这个问题。这可以通过向package添加help_console参数来轻松纠正,该参数将包名称传递给help。要在特定的R会话中创建实现此功能,您可以使用:

fixInNamespace("help_console", "noamtools")

加载脚本编辑器,您可以在其中将help_console的定义更改为以下内容:

function (topic, format = c("text", "html", "latex", "Rd"), lines = NULL, 
    before = NULL, after = NULL, package = NULL) 
{
    format = match.arg(format)
    if (!is.character(topic)) 
        topic <- deparse(substitute(topic))
    helpfile = utils:::.getHelpFile(help(topic, package = (package)))
    hs <- capture.output(switch(format, text = tools:::Rd2txt(helpfile), 
        html = tools:::Rd2HTML(helpfile), latex = tools:::Rd2latex(helpfile), 
        Rd = tools:::prepare_Rd(helpfile)))
    if (!is.null(lines)) 
        hs <- hs[lines]
    hs <- c(before, hs, after)
    cat(hs, sep = "\n")
    invisible(hs)
}

这将允许您单独捕获函数的每个版本的文档:

str(capture.output(help_console(topic="Yates", format = "latex", package="FrF2")))
## chr [1:139] "\\HeaderA{utilitiesCat}{ \\textasciitilde{}\\textasciitilde{} Internal utility functions and a user-visible constant for workin"| __truncated__ ...
str(capture.output(help_console(topic="Yates", format = "latex", package="DoE.base")))
## chr [1:65] "\\HeaderA{block.catlg3}{Catalogues for blocking full factorial 2-level and 3-level designs,  and lists of generating columns fo"| __truncated__ ...

为了将其纳入noamtools,我发出了拉动请求,要求对其进行更改。你可以看到它here on GitHub。它现在已经在GitHub上的主回购中合并,所以你可以像往常一样安装。