4

最近、 R タスク ビューをよく調べていて、興味のあるパッケージがどのタスク ビューにも含まれていないことがわかりました。タスク ビューに一覧表示されているパッケージの補足を見つける確立された方法はありますか?

ファイル (例: http://cran.r-project.org/web/views/Econometrics.ctv )を介しXMLて処理すると、ノードにリストされているすべてのパッケージの和集合を見つけることができます。ダウンロード可能なすべてのパッケージを一覧表示します。それはトリックですか、それとも CRANberriesCRANtasticのようなサイトを使用する際にいくつかのトリックを見逃していますか?ctv<packagelist>available.packages()

更新 1 (これを行わないでください - 以下の私の回答を参照してください): CRAN がパッケージの「ビュー内:」をリストしていることに言及するのを見落としていました。そのため、舞台裏でいくつかの情報がパッケージとそれらが含まれるビューに一致するように保持されているようです。CRAN パッケージ ページのすべてを簡単に (そして無作法に) スクレイピングして、"In views:" を grep することができます。ctvこれは、もう少しエレガントな に出会うまでの私の最初のアイデアでした。

更新 2: ctvへのリンクを見落としていました。タスク ビューに興味がある場合、パッケージのドキュメントは興味深いものです。

4

2 に答える 2

6

ctvドキュメントをもっと注意深く読むべきでした。答えはすぐそこにありました。.rds ファイルという名前のファイルがありますViews.rds。段階的な方法は次のとおりです。

myRepos         <- "http://cran.r-project.org"
tmpfile         <- tempfile()
download.file(paste(myRepos, "src/contrib/Views.rds", sep = "/"), destfile = tmpfile)

myViews         <- .readRDS(tmpfile)
func_listPkgs   <- function(x){return(x$packagelist$name)}
aggRaw          <- lapply(myViews, func_listPkgs)
aggInViews      <- unique(unlist(aggRaw))

availRaw        <- available.packages(contriburl = paste(myRepos, "src/contrib", sep = "/"))
availPkgs       <- rownames(availRaw)
notInViews      <- setdiff(availPkgs, aggInViews)

これが何をしているのかは次のとおりです。

  1. Views.rdsCRAN ミラーからファイルを取得します。
  2. Views.rds をデータ フレームに読み込みます。注: 2.13 より前は を使用する必要がありまし.readRDSたが、現在readRDSは 2.13 に含まれています。 .readRDS非推奨ですが、引き続き機能します。
  3. 利用可能なパッケージのリストを取得します。これはもっと直接的にすることがPackages.gzできます: ダウンロードできる というファイルがありますが、それを解析する必要があります。すでに利用可能なツールに固執しましょう。:)
  4. 2 つのリストで diff を実行します。楽しみのために、反対の diff: を試してくださいoddPackages <- setdiff(aggInViews, availPkgs)。これらのいくつかはベース R のパッケージです。その他は ??? です。知るか。
于 2011-09-01T02:24:38.203 に答える
6

隠されたトリックはありません。CRANberry のようなものを再作成するだけです (これはavailable.packages()、ローカル データベースに保存されている状態データを呼び出して比較することから始まります)。

あなたのケースでは、タスク ビューの選択に関して、available.packages()取得するものとパッケージから取得するもののセットの違いを計算したい場合があります。ctv

編集 1あなたの「アップデート 1」のアイデアは大雑把です。粗雑すぎる。CRAN でのメタ情報は、メタ情報を適切に説明することから得られます。最初のセットはすべてのパッケージであり、各タスク ビューの追加セットであり、おそらく「リスト」と「推奨」に分割され、集計されます。

編集 2ctvのコードを使用してそのファイルを解析し、セットを生成するだけだと思います。これを使用して、cran2debパッケージ作成用の小さなテスト セットを定義しました。そのセット (およびその他のデータ) があれば、Web ページを生成できます。物事を複雑にしすぎている可能性があると思います。私もよく知っているので、Rはそれを可能にします;-)

于 2011-09-01T01:06:37.987 に答える