Linux 定位个人R库/库的独立于平台的方式 实际问题
我如何查询个人软件包库的默认位置,如用户可能已经更改的Linux 定位个人R库/库的独立于平台的方式 实际问题,linux,r,macos,operating-system,package,Linux,R,Macos,Operating System,Package,我如何查询个人软件包库的默认位置,如用户可能已经更改的R\u LIBS\u USER或等环境变量中所述 我只是想了解R是如何准确地以独立于平台的方式确定默认设置的 天真地说,我希望得到与R.home(“library”)相当的东西,例如R.user(“library”) 尽职调查 我选中了这个选项,答案排序包含我想要检索的信息/路径。不幸的是,我只知道如何在Windows上工作,而不知道如何在OSX或Linux上工作。因此,我不确定这在一般意义上是否正确(主目录、用户与系统范围内容的分离等):
R\u LIBS\u USER
或等环境变量中所述
我只是想了解R是如何准确地以独立于平台的方式确定默认设置的
天真地说,我希望得到与R.home(“library”)
相当的东西,例如R.user(“library”)
尽职调查
我选中了这个选项,答案排序包含我想要检索的信息/路径。不幸的是,我只知道如何在Windows上工作,而不知道如何在OSX或Linux上工作。因此,我不确定这在一般意义上是否正确(主目录、用户与系统范围内容的分离等):
OSX
/Library/Frameworks/R.framework/Resources/library
Linux
/usr/local/lib/R/site-library
/usr/lib/R/site-library
/usr/lib/R/library
我也研究了,但这只给了我一个R如何处理这类事情的基本概念(可能只是看错了地方,任何指针都很受欢迎)
背景
我有时会创建一个临时的、新的包库,目的是为系统测试提供一个“沙盒”(例如,当计划升级某些包依赖项时)
完成后,我希望再次删除该库,同时确保不会意外删除其中一个标准库(个人库/库和系统范围库)
我开始为这些目的准备一个小程序包。函数包含我当前的方法(第76行及其后):
##个人自由库//
r_vsn
## 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")
}