如何更改R包的默认库路径

如何更改R包的默认库路径,r,R,我尝试在工作计算机的本地驱动器上安装R和R studio,而不是在组织网络文件夹上,因为任何通过网络运行的东西都非常慢。安装时,目标路径显示它是我的本地C:驱动器。但是,当我安装新软件包时,显示的默认路径是我的网络驱动器,没有更改选项: .libPaths() [1] "\\\\The library/path/I/don't/want" [2] "C:/Program Files/R/R-3.2.1/library" 我正在运行Windows7专业版。如何删除库路径[1]并使路径[2]成为

我尝试在工作计算机的本地驱动器上安装R和R studio,而不是在组织网络文件夹上,因为任何通过网络运行的东西都非常慢。安装时,目标路径显示它是我的本地C:驱动器。但是,当我安装新软件包时,显示的默认路径是我的网络驱动器,没有更改选项:

.libPaths()
[1] "\\\\The library/path/I/don't/want"
[2] "C:/Program Files/R/R-3.2.1/library" 
我正在运行Windows7专业版。如何删除库路径[1]并使路径[2]成为我安装的所有基本软件包和所有新软件包的主路径?

请参阅
帮助(启动)
帮助(.libpath)
,因为您可能已经设置了多个路径。其中包括

  • 设置
    R\u LIBS\u用户
  • .Rprofile
    Rprofile.site
还有更多

在这种情况下,您需要返回并取消设置库/path/I/don't/want设置的位置

若要忽略它,您需要显式地覆盖它,即通过

library("somePackage", lib.loc=.libPaths()[-1])

加载软件包时。

Windows 7/10:如果您的
C:\Program Files
(或安装了R的任何地方)被阻止写入,就像我的一样,那么您将无法编辑
RProfile.site
(就像我做的那样)。如上所述,我更新了
R\u LIBS\u USER
,它成功了。然而,即使在阅读了几遍精美的手册并进行了广泛的搜索之后,我还是花了好几个小时来完成这项工作。本着节省别人时间的精神

假设您希望包驻留在
C:\R\Library

  • 创建文件夹
    C:\R\Library
  • 单击
    开始
    -->
    控制面板
    -->
    用户帐户
    -->
    更改我的环境变量
  • 弹出
    环境变量
    窗口。如果您看到
    R\u LIBS\u USER
    ,请将其高亮显示,然后单击
    Edit
    。否则,单击“新建”。这两个操作都会打开一个窗口,其中包含
    变量
    的字段
  • 在我的例子中,
    R\u LIBS\u USER
    已经存在,并且该值是指向我的桌面的路径。我在路径中添加了我创建的文件夹,上面用分号分隔<代码>C:\R\Library;C:\Users\Eric.Krantz\Desktop\R stuff\Packages。注意:我本可以删除桌面位置的路径,只需离开
    C:\R\Library

  • 面对同样的问题(避免网络中的默认路径),我想到了这个解决方案,并在其他答案中给出了提示

    解决方案是编辑
    Rprofile
    文件以覆盖默认指向主目录的变量
    R\u LIBS\u USER

    以下是步骤:

  • 为库创建目标目标文件夹,例如。,
    ~\target
  • 查找
    Rprofile
    文件。在我的例子中,它位于
    C:\ProgramFiles\R\R-3.3\library\base\R\R profile
  • 编辑文件并更改变量
    R\u LIBS\u USER
    的定义。在我的例子中,我将此行
    file.path(Sys.getenv(“R\u USER”),“R”,
    替换为
    file.path(“~\target”,“R”,
  • 支持此解决方案的文档如下所示

    原始文件,包括:

     if(!nzchar(Sys.getenv("R_LIBS_USER")))
         Sys.setenv(R_LIBS_USER=
                    file.path(Sys.getenv("R_USER"), "R",
                              "win-library",
                              paste(R.version$major,
                                    sub("\\..*$", "", R.version$minor),
                                    sep=".")
                              )) 
    
    修改文件:

    if(!nzchar(Sys.getenv("R_LIBS_USER")))
         Sys.setenv(R_LIBS_USER=
                    file.path("~\target", "R",
                              "win-library",
                              paste(R.version$major,
                                    sub("\\..*$", "", R.version$minor),
                                    sep=".")
                              ))
    

    我曾为此挣扎了一段时间,因为我的工作计算机(使用Windows 10)在网络驱动器上创建了默认用户库,这会将R和RStudio的速度降低到无法使用的状态

    如果这有助于某人,这是我发现的最简单的方法,无需管理员权限:

    • 确保要将软件包安装到的目录存在。如果要遵守约定,请使用:
      C:\Users\username\R\win library\R版本
      (例如,类似于:
      C:\Users\janebloggs\R\win library\3.6
    • 在主目录(可能在网络驱动器上?)中创建一个
      .Renviron
      文件,并在其中写入一行定义
      R\u LIBS\u USER
      变量作为自定义路径:
    R\u LIBS\u USER=C:\Users\janebloggs\R\win library\3.6

    (也可以随意添加注释,行以
    #
    开头)

    如果存在
    .Renviron
    文件,R将在启动时读取该文件,并使用其中定义的变量,然后在
    .Rprofile
    中运行该代码。您可以在
    帮助(启动)
    中阅读该文件


    现在,它在会话之间应该是持久的!

    经过几个小时的尝试,以几种方式解决了这个问题,其中一些在这里介绍,对我来说(在Win 10上),创建Renviron文件的选项是有效的,但与上面写的略有不同

    任务是更改变量R_LIBS_USER的值。要执行此操作,需要两个步骤:

  • 在文件夹\Program\etc\中创建名为Renviron(不带点)的文件(Program是安装R的目录——例如,对我来说,它是C:\Program Files\R\R-4.0.0\etc)
  • 使用新路径在Renviron中插入一行:
    R\u LIBS\u USER=“C:/R/Library”
  • 之后,重新启动R并使用
    .libPaths()
    确认默认目录已更改。

    网络上的Windows 10 将软件包存储在网络驱动器上会大大降低R/R Studio的性能,并且由于必须通过服务器检索数据并将数据推送回本地主机这一瓶颈,您需要花费大量时间等待库的加载/安装。有关如何创建.RProfile o的说明,请参阅以下内容在您的本地计算机上:

  • 创建一个名为C:\Users\xxxxxx\Documents\R\3.4的目录(或您正在使用的任何R版本,以及存储本地R包的位置-您的目录位置可能与我的不同)
  • 在R控制台上,键入
    Sys.getenv(“HOME”)
    t
    .libPaths(c("C:\Users\xxxxxx\Documents\R\3.4", "C:/Program Files/Microsoft/R Client/R_SERVER/library"))
    
    message("*** Setting libPath to local hard drive ***")
    
    trace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at=12L, print=TRUE)
    
    message("*** Add 2 second delay when installing packages, to accommodate virus scanner for R 3.4 (fixed in R 3.5+)***")
    
    options(gsubfn.engine = "R")
    
    message("*** Successfully loaded .Rprofile ***")
    
     .libPaths(new = "/my/path/to/libs")