R帮助页作为对象
是否有一种很好的方法可以从安装的包中以R对象(例如列表)的形式提取get-R-help页面。我希望以标准化JSON或XML模式的形式公开帮助页面。然而,从数据库获取R-help信息比我想象的要困难R帮助页作为对象,r,cran,R,Cran,是否有一种很好的方法可以从安装的包中以R对象(例如列表)的形式提取get-R-help页面。我希望以标准化JSON或XML模式的形式公开帮助页面。然而,从数据库获取R-help信息比我想象的要困难 我不久前拼凑起来,得到了一个R帮助手册页面的HTML。然而,我更希望有一个包含这些信息的通用R对象,我可以将其呈现为JSON/XML/HTML等。我查看了Hadley提供的helpr包,但这似乎有点过分了 您可以通过以下方式更轻松地执行此操作: getHTMLhelp <- function(.
我不久前拼凑起来,得到了一个R帮助手册页面的HTML。然而,我更希望有一个包含这些信息的通用R对象,我可以将其呈现为JSON/XML/HTML等。我查看了Hadley提供的
helpr
包,但这似乎有点过分了
您可以通过以下方式更轻松地执行此操作:
getHTMLhelp <- function(...){
thefile <- help(...)
capture.output(
tools:::Rd2HTML(utils:::.getHelpFile(thefile))
)
}
或:
>HelpGam头(HelpGam)
[1] ""
[2] “R:广义加性混合模型”
[3] ""
[4] ""
[5] ""
[6] ""
所以下面是我拼凑的东西。然而,我还必须在许多帮助文件上测试它,看看它是否能正常工作
Rd2list <- function(Rd){
names(Rd) <- substring(sapply(Rd, attr, "Rd_tag"),2);
temp_args <- Rd$arguments;
Rd$arguments <- NULL;
myrd <- lapply(Rd, unlist);
myrd <- lapply(myrd, paste, collapse="");
temp_args <- temp_args[sapply(temp_args , attr, "Rd_tag") == "\\item"];
temp_args <- lapply(temp_args, lapply, paste, collapse="");
temp_args <- lapply(temp_args, "names<-", c("arg", "description"));
myrd$arguments <- temp_args;
return(myrd);
}
getHelpList <- function(...){
thefile <- help(...)
myrd <- utils:::.getHelpFile(thefile);
Rd2list(myrd);
}
Rd2list但是有没有办法得到一个非HTML化的对象?应该在你的问题中指定。当你分析Rd时,我认为这就是你想要的。使用RD2Text将为您提供纯文本。只需获取文件(无需任何解析)即可获得原始Rd格式。如果要将其转换为列表,则必须编写自己的函数。我非常讨厌使用match.call
和后续调用操作。“我认为只使用弦更好,”哈德利说,我想这是一个风格问题。这就是lm和许多其他功能的工作方式。另外,例如,如果R内核决定更改目录结构,它仍然可以工作。使用字符串操作会有点棘手。我的意思是你可以将你的函数写成getHTMLHelp一个提示:去掉分号。说真的,放下它们。这是C代码,不是R代码。在R中,你不需要它们,除非你想在一行上放两个命令,我强烈建议你不要这样做。我喜欢它们。当我忘记关闭括号时,它们经常帮助我调试。
> HelpGam <- getHTMLhelp(gamm,package=mgcv)
> head(HelpGam)
[1] "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"
[2] "<html><head><title>R: Generalized Additive Mixed Models</title>"
[3] "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"
[4] "<link rel=\"stylesheet\" type=\"text/css\" href=\"R.css\">"
[5] "</head><body>"
[6] ""
Rd2list <- function(Rd){
names(Rd) <- substring(sapply(Rd, attr, "Rd_tag"),2);
temp_args <- Rd$arguments;
Rd$arguments <- NULL;
myrd <- lapply(Rd, unlist);
myrd <- lapply(myrd, paste, collapse="");
temp_args <- temp_args[sapply(temp_args , attr, "Rd_tag") == "\\item"];
temp_args <- lapply(temp_args, lapply, paste, collapse="");
temp_args <- lapply(temp_args, "names<-", c("arg", "description"));
myrd$arguments <- temp_args;
return(myrd);
}
getHelpList <- function(...){
thefile <- help(...)
myrd <- utils:::.getHelpFile(thefile);
Rd2list(myrd);
}
myhelp <- getHelpList("qplot", package="ggplot2");
cat(jsonlite::toJSON(myhelp));