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

时间:2015-07-29 18:04:44

标签: r

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

.libPaths()
[1] "\\\\The library/path/I/don't/want"
[2] "C:/Program Files/R/R-3.2.1/library" 

我正在运行Windows 7专业版。如何删除库路径[1]并使路径[2]成为我安装的所有基础包和所有新包的主要路径?

7 个答案:

答案 0 :(得分:32)

请参阅help(Startup)help(.libPaths),因为您可能已经设置了多种可能性。其中有

  • 设置R_LIBS_USER
  • .libPaths().Rprofile
  • 中分配Rprofile.site

等等。

在这种特殊情况下,您需要向后移动并在设置\\\\The library/path/I/don't/want时取消设置。

要忽略它,你需要明确地覆盖它,即通过

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

加载包时。

答案 1 :(得分:30)

Windows 7:如果你的C:\Program Files(或者安装了R的地方)被阻止写作,就像我的那样,那么你会感到沮丧地编辑RProfile.site(正如我所做的那样)。如上所述,我更新了R_LIBS_USER并且它有效。然而,即使在阅读了好几本精细的手册并进行了广泛的搜索之后,我花了几个小时来做​​这件事。本着拯救别人时间的精神......

我们假设您希望您的软件包位于C:\R\Library

  1. 创建文件夹C:\R\Library
  2. 点击Start - > Control Panel - > User Accounts - > Change my environmental variables
  3. 弹出Environmental Variables窗口。如果您看到R_LIBS_USER,请突出显示该Edit,然后点击New。否则,请点击Variable。这两个操作都会打开一个窗口,其中包含ValueR_LIBS_USER的字段。
  4. 在我的情况下,C:\R\Library;C:\Users\Eric.Krantz\Desktop\R stuff\Packages已经存在,值是我桌面的路径。我在路径中添加了我创建的文件夹,如上所述以分号分隔。 C:\R\Library。注意:我可以删除桌面位置的路径,只需离开<?php for($i = 1; $i<=10; $i++){ ?> <a class="pagenumber" href="?p=<?php echo $i; ?>"><?php echo $i; ?></a> <?php } ?>

答案 2 :(得分:13)

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

解决方案是编辑Rprofile文件以覆盖变量R_LIBS_USER,该变量默认指向主目录。

这里的步骤:

  1. 为库创建目标目标文件夹,例如, ~\target
  2. 找到Rprofile文件。就我而言,它位于C:\Program Files\R\R-3.3.3\library\base\R\Rprofile
  3. 编辑文件并将变量更改为R_LIBS_USER。在我的情况下,我将此行file.path(Sys.getenv("R_USER"), "R",替换为file.path("~\target", "R",
  4. 支持此解决方案的文档为here

    原始文件:

     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=".")
                              ))
    

答案 3 :(得分:2)

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

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

  • 确保要安装软件包的目录存在。如果要遵守约定,请使用:C:\Users\username\R\win-library\rversion(例如,类似C:\Users\janebloggs\R\win-library\3.6
  • 在主目录(可能在网络驱动器上?)中创建一个.Renviron文件,然后在其中写入一行,将R_LIBS_USER变量定义为您的自定义路径:< / li>

R_LIBS_USER=C:\Users\janebloggs\R\win-library\3.6

(也可以添加评论,行以#开头)

如果存在.Renviron文件,则R将在启动时读取它,并使用在其中定义的变量,然后在.Rprofile中运行代码。您可以在help(Startup)中了解它。

现在它应该在会话之间保持不变!

答案 4 :(得分:2)

网络上的Windows 10

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

  1. 创建一个名为C:\ Users \ xxxxxx \ Documents \ R \ 3.4的目录(或您使用的任何R版本,以及用于存储本地R包的位置-目录位置可能与我的不同)
  2. 在R控制台上,键入Sys.getenv("HOME")以获取您的主目录(这是您的.RProfile的存储位置,R始终在其中检查软件包-如果软件包存储在网络上,则在网络上)< / li>
  3. 创建一个名为.Rprofile的文件并将其放在:\YOUR\HOME\DIRECTORY\ON_NETWORK(在R控制台中键入Sys.getenv("HOME")后得到的目录)
  4. .Rprofile的文件内容应如下所示:

#search 2 places for packages- install new packages to first directory- load built-in packages from the second (this is from your base R package- will be different for some)

.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 ***")

#insert a sleep command at line 12 of the unpackPkgZip function. So, just after the package is unzipped.

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+)***")

# fix problem with tcltk for sqldf package: https://github.com/ggrothendieck/sqldf#problem-involvling-tcltk

options(gsubfn.engine = "R")

message("*** Successfully loaded .Rprofile ***")
  1. 重新启动R Studio并确认您看到了上面的消息。

现在,您可以在本地主机上享受更快的应用程序性能,而与将程序包存储在网络上并减慢一切运行速度相比。

答案 5 :(得分:1)

我想我尝试了上述所有方法,但对我不起作用。不过这行得通:

  1. 在主目录下,创建一个名为“.Renviron”的文件

  2. 在那个文件中,写:

    setWindowModality(Qt::ApplicationModal);
  3. 保存并重新启动 R,如果它打开了

答案 6 :(得分:0)

经过几个小时的尝试以几种方式解决该问题,其中一些在此进行了描述,对我而言(在Win 10上)可以选择创建Renviron文件,但与此处编写的内容略有不同以上。 任务是更改变量R_LIBS_USER的值。为此,需要执行两个步骤:

  1. 在\ Program \ etc \文件夹中创建名为Renviron的文件(不带点)(Programm是R的安装目录,例如,对于我来说是c:\ Program Files \ R \ R-4.0.0 \等)
  2. 在Renviron中插入一条带有新路径的行:R_LIBS_USER=c:/R/Library

它已经工作了几天。