2020/05/19

R - 附録 1 pkginfo() - パッケージ内のオブジェクトの一覧を表示する

R のパッケージ内のオブジェクトの一覧を表示する関数です。オブジェクトの名前とクラスとサイズを表示します。

ソースコード

pkginfo <- function(pkgname, pattern) {
  envir <- as.environment(paste0("package:", as.character(substitute(pkgname))))
  objnames <- ls(envir=envir, pattern=pattern)
  classnames <- unlist(lapply(objnames, function(x) as.vector(class(get(x, envir=envir)))[1]))
  sizes <- unlist(lapply(objnames, function(x) as.vector(object.size(get(x, envir=envir)))[1]))
  data.frame(class=classnames, size=sizes, row.names=objnames)
}

仕様

指定したパッケージのオブジェクトの一覧を表示します。オブジェクト名とクラス名、サイズ(bytes) の3列からなる表形式で表示します。実際はデータフレームを返しているので、加工することも可能です。
pattern を指定すれば、名前がマッチするオブジェクトのみ取り出されます。

使用例

> library(nnet)
> pkginfo(nnet)
                class   size
class.ind    function  32224
multinom     function 706928
nnet         function   1240
nnet.default function 319984
nnet.formula function 224528
nnetHess     function  81472
which.is.max function  10792

検索リスト上に無いといけないので、library() で読み込んである必要があります。

> head(pkginfo(datasets), 10)
                   class  size
ability.cov         list  2136
airmiles              ts   656
AirPassengers         ts  1616
airquality    data.frame  5632
anscombe      data.frame  2592
attenu        data.frame 15648
attitude      data.frame  3176
austres               ts  1176
beaver1       data.frame  4736
beaver2       data.frame  4288

戻り値はデータフレームなので、head() などで加工も可能です。

> pkginfo(datasets, "[cC][oO]2")
             class size
co2             ts 4208
CO2 nfnGroupedData 9976

第2引数の pattern に正規表現を渡せばパターンマッチで絞り込みができます。