即使在R_LIBS_USER
或.libPaths()
等环境变量之后,如何查询R Installation and Adminstration中所述的个人包库/库的默认位置。用户可能已经改变了吗?
我想了解R究竟是如何以独立于平台的方式确定默认设置。
天真地,我希望得到与R.home("library")
相当的东西,例如R.user("library")
我检查了这个post,答案排序包含了我想要检索的信息/路径。不幸的是,我只是真正了解Windows,而不是OS X或Linux。因此,我不确定在一般意义上(主目录,用户与系统范围之间的分离等)是否/多少是正确的:
OS X
/Library/Frameworks/R.framework/Resources/library
的Linux
/usr/local/lib/R/site-library
/usr/lib/R/site-library
/usr/lib/R/library
我也查看了manual,但这只给了我一个关于R如何处理这些事情的基本概念(可能只是看错了角落,任何指针都非常感激)。
我有时会创建一个临时的,新鲜的软件包库,以便拥有一个"沙盒"用于系统测试(例如,计划升级某些软件包依赖项时)。
当我完成后,我想再次删除该库,同时确保我不会意外删除其中一个标准库(个人库/库和系统库) )。
为了这些目的,我开始整理一个名为libr
的小包。函数deleteLibrary
包含我当前的方法(第76行):
## Personal libs //
r_vsn <- paste(R.version$major, gsub("\\..*", "", R.version$minor), sep = ".")
if (.Platform$pkgType == "win.binary") {
lib_p <- file.path(Sys.getenv("HOME"), "R/library", r_vsn)
} else if (.Platform$OS.type == "mac.binary") {
lib_p <- file.path(Sys.getenv("HOME"), "lib/R", r_vsn)
## Taken from https://stackoverflow.com/questions/2615128/where-does-r-store-packages
## --> Hopefully results in something like: '/Users/{username}/lib/R/{version}'
} else if (.Platform$OS.type == "source" && .Platform$OS.type == "unix") {
lib_p <- file.path(Sys.getenv("HOME"),
c(
"local/lib/R/site-library",
"lib/R/site-library",
"lib/R/library"
), r_vsn)
## Taken from https://stackoverflow.com/questions/2615128/where-does-r-store-packages
## --> Hopefully results in something like:
## '/usr/local/lib/R/site-library/{version}'
## '/usr/lib/R/site-library/{version}'
## '/usr/lib/R/library/{version}'
} else {
stop("Don't know what to do for this OS type")
}