如packageStatus()
docs所示,它返回一个包含两个组件的列表.我们感兴趣的是inst
:
以列为矩阵的数据帧,由
installed.packages
加"Status"
返回,为levels c("ok", "upgrade", "unavailable")
的因子.
下面是一个提取它的函数:
get_packages_with_status <- function(status = "unavailable", names_only = TRUE, ...) {
pkgs <- packageStatus(...)
tbl <- pkgs$inst[pkgs$inst$Status == status, ]
if (names_only) {
return(unname(tbl$Package))
}
tbl
}
输出应如下所示:
get_packages_with_status()
# [1] "assertive" "assertive.code" "assertive.data" "assertive.data.uk" "assertive.data.us" "assertive.datetimes"
# [7] "assertive.properties" "assertive.reflection" "assertive.strings" "assertive.types" "BiocGenerics" "BiocVersion"
# [13] "cqcapi" "cqcrequests" "echarts4r.maps" "estimability" "geojsonlint" "getnews"
# [19] "graph" "hexjsonwidget" "maptools" "optiRum" "pwrcalc" "rgdal"
如果您想要完整的数据框.
get_packages_with_status(names_only = FALSE)
# Package LibPath Version Priority Depends
# assertive assertive /home/sam/R/x86_64-pc-linux-gnu-library/4.2 0.3-6 <NA> R (>= 3.0.0)
# assertive.code assertive.code /home/sam/R/x86_64-pc-linux-gnu-library/4.2 0.0-3 <NA> R (>= 3.0.0)
# assertive.data assertive.data /home/sam/R/x86_64-pc-linux-gnu-library/4.2 0.0-3 <NA> R (>= 3.0.0)
# assertive.data.uk assertive.data.uk /home/sam/R/x86_64-pc-linux-gnu-library/4.2 0.0-2 <NA> R (>= 3.0.0)
# assertive.data.us assertive.data.us /home/sam/R/x86_64-pc-linux-gnu-library/4.2 0.0-2 <NA> R (>= 3.0.0)
# assertive.datetimes assertive.datetimes /home/sam/R/x86_64-pc-linux-gnu-library/4.2 0.0-3 <NA> R (>= 3.0.0)
# assertive.properties assertive.properties /home/sam/R/x86_64-pc-linux-gnu-library/4.2 0.0-5 <NA> R (>= 3.0.0)
# assertive.reflection assertive.reflection /home/sam/R/x86_64-pc-linux-gnu-library/4.2 0.0-5 <NA> R (>= 3.0.0)
# <etc>
另请注意,可用的定义取决于您为repositories
提供的参数:
描述R程序包资料库在Internet或本地计算机上的位置的URL的字符矢量.如果指定为空,则从选项
"repos"
派生相应的URL.
这就是为什么,正如MrFlick的comment所指出的那样,在我的列表中,我可以看到列出为不可用的软件包,即使我知道它们已经安装,因为它们是从GitHub或本地安装的.