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")
  }