8

インストールされたパッケージから R オブジェクト (例: リスト) の形式で R ヘルプ ページを取得する良い方法はありますか。標準化された JSON または XML スキーマの形式でヘルプ ページを公開したいと考えています。しかし、DB から R ヘルプ情報を取得するのは、思ったよりも困難です。

しばらく前にハッキングして、R ヘルプ マニュアル ページの HTML を取得しました。ただし、JSON / XML / HTMLなどにレンダリングできる、この情報を含む一般的なRオブジェクトが必要です。Hadleyのhelprパッケージを調べましたが、これは私の目的には少しやり過ぎのようです.

4

2 に答える 2

7

ハドリーの提案で編集

次の方法で、これを少し簡単に行うことができます。

getHTMLhelp <- function(...){
    thefile <- help(...)
    capture.output(
      tools:::Rd2HTML(utils:::.getHelpFile(thefile))
    )
}

tools:::Rd2txtの代わりに使用するtools:::Rd2HTMLと、プレーンテキストが得られます。ファイルを取得するだけで(解析なしで)元のRd形式が得られるため、カスタム解析関数を記述してオブジェクトに解析できます(すべての情報をリストに抽出するのに優れた@Jeroenのソリューションを参照してください) )。

この関数は とまったく同じ引数を取りhelp()、すべての要素がファイル内の行であるベクトルを返します。たとえば、次のようになります。

> head(HelpAnova)
[1] "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"      
[2] "<html><head><title>R: Anova Tables</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] ""           

または :

> 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] ""           
于 2012-01-19T15:41:35.640 に答える
4

だから私が一緒にハックしたものの下に。ただし、それが一般的に機能するかどうかを確認するために、まだ多くのヘルプファイルでテストする必要があります。

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));
于 2012-01-24T07:31:11.440 に答える