我编写了一个函数来获取所有已加载软件包的名称和版本:
my_lib <- function(){
tmp <- (.packages())
tmp_base <- sessionInfo()$basePkgs
tmp <- setdiff(tmp, tmp_base)
tmp <- sort(tmp)
tmp <- sapply(tmp, function(x){
x <- paste(x, utils::packageVersion(x), sep = ' v')
})
tmp <- paste(tmp, collapse=', ')
return(tmp)
}
这还将所有作为依赖项加载的软件包返回给其他软件包(例如,我加载了car
,而carData
被加载为依赖项)。
我想知道是否有办法只返回我手动加载的软件包(例如,car
)? R能否说出手动加载与依赖加载之间的区别?
编辑:
添加了一行以使用sessionInfo()
删除基本软件包
答案 0 :(得分:1)
R在装入的包装和附加的包装之间有细微的差别。
使用library
函数时会附带一个程序包,
并使导出的功能对用户的全局环境“可见”。
如果附有包装,
其名称空间已加载,
但是相反的情况不一定成立。
每个程序包可以定义两种主要的依赖关系类型:Depends
和Imports
。
前者中的软件包会在附加从属软件包后立即被附加,
但是后者中的软件包只会被加载。
这意味着您无法完全区分,
因为您可以致电library
获取特定的软件包,
但其Depends
所在的所有软件包也会被附加。
不过,您可以使用loadedNamespaces()
和search()
区分加载和附加的软件包。