提问人:I Like to Code 提问时间:3/2/2013 最后编辑:zx8754I Like to Code 更新时间:11/16/2022 访问量:681140
在 Rprofile.site 中使用 .libPaths 更改 R 默认库路径无法正常工作
Change R default library path using .libPaths in Rprofile.site fails to work
问:
我在 Windows 上运行 R,而不是作为管理员。当我安装软件包时,以下命令不起作用:
> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable
要安装软件包,我必须指定库位置:
install.packages("zoo", lib="C:/software/Rpackages")
要加载包,我还必须指定库位置:
library("zoo", lib.loc="C:/software/Rpackages")
所有这些都没问题,但我想看看我是否可以以某种方式添加到库路径中,因此不必每次都键入它。C:/software/Rpackages
当我在网上搜索时,我发现一种方法是编辑文件并添加行Rprofile.site
.libPaths("C:/software/Rpackages")
但是,在执行此操作并启动 RStudio 之后,这是我得到的输出
> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"
我添加到的命令似乎没有任何效果!为什么会这样?或者更重要的是,如何解决该问题,以便无需键入库位置即可安装和加载包?.libPaths
Rprofile.site
注意:如果我启动 RStudio,该命令似乎可以正常工作.libPaths()
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
这不是很奇怪吗?
答:
我通常尝试将所有包保存在一个库中,但是如果您想添加一个库,为什么不将新库(必须已经存在于文件系统中)附加到现有库路径中呢?
.libPaths( c( .libPaths(), "~/userLibrary") )
# obviously this would need to be a valid file directory in your OS
# min just happened to be on a Mac that day
或者(这将使 userLibrary 成为放置新包的第一个地方):
.libPaths( c( "~/userLibrary" , .libPaths() ) )
然后我得到(至少在我最初写这篇文章的时候):
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"
该函数与大多数其他非图形函数略有不同。它通过副作用起作用。报告和更改 R 环境变量的函数和函数已拆分,但可以报告或更改其目标。.libPaths
Sys.getenv
Sys.setenv
.libPaths
有关 R 启动过程的信息可以在帮助页面上阅读,RStudio 材料位于: https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio?Startup
在您的情况下,RStudio 似乎不遵守 Rprofile.site 设置,或者可能通过读取 .Rprofile 设置来自 RStudio 默认值之一。还应该提到的是,此操作的结果还会将调用的内容附加到 和 ,这是 RStudio(或安装的任何其他 IDE 或网络)托管 R 可能表现出不同行为的进一步原因。.Library
.Library.site
由于返回 R 进程的当前系统环境,因此可以通过以下方式查看库和其他路径:Sys.getenv()
Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]
对于存储和访问软件包来说,重要的两个是(现在在 Linux 机器上有所不同):
R_LIBS_SITE /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/
评论
c()
.libPaths
?.libPaths
file.exists
我设法通过将代码放在默认工作目录中的文件中来解决这个问题。.Rprofile
首先,我找到了默认工作目录的位置
> getwd()
[1] "C:/Users/me/Documents"
然后,我使用文本编辑器编写了一个简单的文件,其中包含以下行.Rprofile
.libPaths("C:/software/Rpackages")
最后,当我启动并运行时,我得到了所需的输出:R
.libPaths()
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
评论
Sys.getenv("HOME")
正确的解决方案是将环境变量设置为所需库文件夹的文件路径的值,而不是让 RStudio 识别 Rprofile.site 文件。R_LIBS_USER
要在 Windows 中设置环境变量,请转到控制面板(“系统属性”->“高级系统属性”->“环境变量”-“> 个用户变量”)到所需的值(库文件夹的路径),例如R_LIBS_USER
Variable name: R_LIBS_USER
Variable value: C:/software/Rpackages
如果由于某种原因您无法访问控制面板,您可以尝试在 Windows 上从命令行运行并从那里添加环境变量。rundll32 sysdm.cpl,EditEnvironmentVariables
设置 R_LIBS_USER 将确保库首先显示在 .libPaths() 中,无论直接启动 RStudio 还是右键单击文件并“打开方式”以启动 RStudio。
如果 RStudio 始终通过单击 RStudio 快捷方式启动,则 Rprofile 解决方案可以正常工作。在这种情况下,将默认工作目录设置为存放 Rprofile 的目录就足够了。单击文件以启动 RStudio 时,Rprofile 解决方案不起作用,因为这会将工作目录从默认工作目录更改为其他目录。
评论
.bash_profile
.bashrc
export R_LIBS_USER='directory_of_your_choice'
如果您没有管理员权限,打开位于 \R-3.1.0\etc 中的 -file 并添加以下内容也会有所帮助:Rprofile.site
.First <- function(){
.libPaths("your path here")
}
这将在启动时直接评估命令.libPath()
我真的很难理解这一点。当我上次重新安装操作系统和 Rstudio 时,gorkypl 给出了上面的正确解决方案,但这一次,设置我的环境变量没有解决。
卸载了 R 和 Rstudio,创建了目录 C:\R 和 C:\Rstudio,然后重新安装了两者。
将R_LIBS_USER用户变量定义到您喜欢的目录(根据 gorkypl 的回答),然后重新启动计算机以加载用户变量。打开 Rstudio,错误应该消失了。
您还可以使用将R_LIBS_USER修改为备用库的路径,这样更容易,并且不需要重新启动计算机。Sys.setenv()
要查看R_LIBS_USER设置为什么,请执行以下操作:?Sys.getenv()
阅读是有用的。help(Startup)
getwd()
# [1] "C:/Users/..../software/My R studio"
用双逗号复制上面的链接
.libPaths(new="C:/Users/..../software/My R studio")
安装包的默认路径将更改
如果在安装新版本的 R 后或通过任何其他方式更改了默认包库,则可以在以下命令的帮助下追加这两个库以使用所有包。 获取现有库路径:
.libPaths()
现在,设置现有路径和旧路径:
.libPaths(c(.libPaths(), "~/yourOldPath"))
希望它有所帮助。
我读了自述文件。在他们提到的情况下,在命令行中使用 .libPaths() 来检查有哪些路径。我之前有 2 条库路径。当我在想要的地方使用命令 .libpath(“C:/Program Files/R/R-3.2.4revised/library”) 时,它更改了库路径。当我再次在命令行中输入 .libPaths() 时,它向我显示了正确的路径。希望这会有所帮助
我在这里找到了我认为的解决方案(感谢 SFU 的 Carl Schwarz)添加了一个个人库,该库是永久的(您不必在每个会话中定义它)无论是使用 R 还是 Rstudio,并且 Rstudio 将其视为我的 Mac 机器上的默认值。我没有看到它在 SO 上明确地列出这一点,所以我总结了他们提供的步骤,适用于 Windows,然后是 Mac。
对于 Windows 7 操作系统:
在要保存个人库的驱动器上创建一个目录,例如 C:\User\Rlibs(或您有权访问的其他目录)
在 Windows 搜索栏中搜索/转到“编辑帐户的环境变量”以编辑控制面板设置
点击“新建...”在“环境变量”窗口的中间
在“新建用户变量”窗口中,键入 R_LIBS 作为“变量名称”,以及您创建的个人库目录的路径,例如 C:\User\Rlibs
单击“确定”,您应该会在“用户变量”窗口中看到“变量/值”对
再次单击“确定”
现在,当您启动 R(或 Rstudio)并键入命令时,您应该会看到您创建的个人库以及 R 系统库。.libPaths()
对于 Mac:
在“Home”或“username”目录中,创建一个名为 Rlibs 的文件夹
启动终端应用程序
类型:确保拼写和大小写匹配。
echo "R_LIBS=~/Rlibs" > .Renviron
键入以查看目录中文件的完整列表,其中现在应包括 .伦夫里翁
ls -a
验证 .Renviron 文件已正确设置:
more .Renviron
启动 R/Rstudio 并键入,您应该会看到个人库的新路径。.libPaths()
我正在研究这个问题,因为 R 在安装到默认位置时遇到问题,而只是将包放入临时文件夹中。事实证明,这是 Mcaffee Endpoint Security 的最新更新,它显然与 R 有关。您可以在安装软件包时禁用威胁防护,它将正常工作。
https://superuser.com/questions/749283/change-rstudio-library-path-at-home-directory
编辑~/。伦维隆
R_LIBS_USER=/some/path
只需在没有管理员权限的目录中更改 R 库的默认文件夹,例如
.libPaths("C:/R/libs")
如果您想永久更改库路径(每次输入 R 时都不调用 .libPath(),这对我有用:
创造。Rprofile 在您的主目录下。(~/.Rprofile)
键入 。Rprofile 文件,保存。
.libPaths(c( .libPaths(), "your new path" ))
打开R(任意目录)并检查,只需键入,即可发现您的libaray路径已更新!
.libPaths()
在 Ubuntu 上,更改用户默认库路径的推荐方法是在文件中设置变量。R_LIBS_USER
~/.Renviron
touch ~/.Renviron
echo "R_LIBS_USER=/custom/path/in/absolute/form" >> ~/.Renviron
由于这里的大多数答案都与 Windows 和 Mac OS 有关,(并且考虑到我也为此而苦苦挣扎),我决定在我的 Arch Linux 设置中发布帮助我解决这个问题的过程。
步骤1:
- 对您的系统(例如 ANGRYSearch)进行全局搜索,以查找术语(这是设置用户库设置的配置文件)。
Renviron
- 它应该在以下目录路径中仅返回两个结果:
/etc/R/
/usr/lib/R/etc/
注意:存储在 1 和 2(上面)的Renviron
配置文件是相互热链接的(这意味着对一个文件所做的更改将在保存正在编辑的文件时自动应用于另一个文件 [ 以相同的形式/结构 ] - [ 您还需要sudo
权限来保存文件后编辑 ] ) )。
步骤2:
- 导航到第一个目录路径 ( ) 并使用您喜欢的文本编辑器打开文件。
/etc/R/
Renviron
- 进入文件后,搜索标记并将大括号部分中的文本更新为所需的目录路径。
示例:
...更改自 ( 原始条目 ):
...更改为 ( 您想要的条目 ):Renviron
R_LIBS_USER
R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/4.0'}
R_LIBS_USER=${R_LIBS_USER-'~/Apps/R/rUserLibs'}
步骤3:
- 保存您刚刚编辑的文件...完成 !!
Renviron
我遇到了同样的问题,我遇到了这个问题。如果要创建另一个位置,也应该可以正常工作。如上所述,“您应该能够右键单击 Rstudio.exe 图标,单击”属性“,然后选择一个选项以始终以管理员身份运行 Rstudio。确保在要打开 Rstudio 时使用相同的图标。c("C:/Users/mynewlocation")
myPaths <- .libPaths() # get the paths
myPaths <- c(myPaths[2], myPaths[1]) # switch them
.libPaths(myPaths) # reassign them
上一个:基于值向量的数据框中的子集行
评论
install.packages("zoo")
install.packages("zoo")
.libPaths()
Rprofile.site