在Rprofile.site中使用.libPaths更改R默认库path无法正常工作
我在Windows上运行R,而不是以pipe理员身份运行。 当我安装一个软件包时,以下命令不起作用:
> 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
到库path中,从而不必每次都input它。
正如我在网上search,我发现一种方法是编辑Rprofile.site
文件并添加行
.libPaths("C:/software/Rpackages")
但是,这样做后,启动RStudio,这是我得到的输出
> .libPaths() [1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"
我添加到Rprofile.site
的.libPaths
命令似乎没有任何作用! 这是为什么? 或者更重要的是,我该如何解决这个问题,以便我可以在不input库位置的情况下安装和加载包?
注意:如果我启动RStudio,那么.libPaths()
命令似乎可以正常工作
.libPaths("C:/software/Rpackages") > .libPaths() [1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
这不奇怪吗?
我通常会尽量将所有的包保存在一个库中,但是如果你想添加一个库,为什么不把新库添加到现有库中:
.libPaths( c( .libPaths(), "~/userLibrary") )
然后我得到:
> .libPaths() [1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library" [2] "/Users/davidwinsemius/userLibrary"
.libPaths
函数与大多数其他非graphics函数有点不同。 它通过副作用起作用。 报告和更改R环境variables的函数Sys.getenv
和Sys.setenv
已被拆分,但.libPaths
可以报告或更改其目标。 有关R启动过程的信息可以在?Startup
帮助页面阅读,并且有以下RStudio材料: https : //support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio
在你的情况下,似乎RStudio不尊重Rprofile.site设置,或者可能是通过从RStudio默认值之一读取.Rprofile设置覆盖它们。 还应该提到的是,这个操作的结果也会把调用的内容附加到.Library
和.Library.site
,这也是为什么一个RStudio(或者任何其他安装了IDE的networking)托pipe的R可能会performance出不同的行为。
正确的解决scheme是将环境variablesR_LIBS_USER
设置为所需库文件夹的文件path的值,而不是使RStudio识别Rprofile.site文件。
要在Windows中设置环境variablesR_LIBS_USER
,请进入控制面板(系统属性 – >高级系统属性 – >环境variables – >用户variables)到所需的值(库文件夹的path),例如
Variable name: R_LIBS_USER Variable value: C:/software/Rpackages
设置R_LIBS_USER将确保无论直接启动RStudio,还是通过右键单击文件,然后单击“打开方式”启动RStudio,库都将首先显示在.libPaths()中。
如果始终通过单击RStudio快捷方式启动RStudio,则Rprofile解决scheme可以工作。 在这种情况下, 将默认工作目录设置到Rprofile所在的目录就足够了。 单击文件启动RStudio时,Rprofile解决scheme不起作用,因为它将工作目录从默认工作目录中移开。
我设法通过将.Rprofile
文件中的代码放在默认的工作目录中来解决这个问题。
首先,我find了默认工作目录的位置
> 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"
如果您没有pipe理员权限,打开位于\ R-3.1.0 \ etc中的Rprofile.site
文件并添加:
.First <- function(){ .libPaths("your path here") }
这将直接在启动时评估.libPath()
命令
我发现我认为这是一个解决scheme(感谢SFU的Carl Schwarz),因为添加一个永久性的个人图书馆(你不必每个会话都定义它)就能识别使用R还是Rstudio,而Rstudio将它视为在我的Mac机上默认。 我没有看到它明确地阐述了这一点,所以我总结了他们提供的步骤,Windows和Mac。
对于Windows 7操作系统:
-
在你想拥有个人图书馆的驱动器上创build一个目录,例如C:\ User \ Rlibs(或者你有权限的另一个目录)
-
search/转到“编辑您的帐户的环境variables”
-
点击“环境variables”窗口中的“新build…”
-
在“新build用户variables”窗口中,为“variables名称”键入R_LIBS ,并创build个人库目录的path,例如C:\ User \ Rlibs
-
单击确定,您应该在用户variables窗口中看到variables/值对
-
再次单击确定
现在,当您启动R(或Rstudio)并键入命令.libPaths()
您应该看到您创build的个人库以及R系统库。
对于Mac:
-
在您的“家庭”或“用户名”目录中创build一个名为Rlibs的文件夹
-
启动terminal应用程序
-
types:
echo "R_LIBS=~/Rlibs"> .Renvrion
确保大小写匹配。 -
input
ls -a
以查看目录中的文件的完整列表,该文件现在应包含.Renvrion -
validation.Renviron文件已被正确设置:
more .Renviron
启动R / Rstudio并键入.libPaths()
,你应该看到你的个人图书馆的新path。
我很难理解这一点。 gorkypl给了上面正确的解决scheme,当我上次重新安装我的OS&Rstudio但这次,设置我的环境variables没有解决。
卸载R和Rstudio,创build目录C:\ R和C:\ Rstudio,然后重新安装两者。
将R_LIBS_USER用户variables定义到您的首选目录(根据gorkypl的答案),然后重新启动您的机器,以便加载Uservariables。 打开Rstudio,错误应该消失。
您也可以使用Sys.setenv()
将R_LIBS_USER修改为您的替代库的path,这更容易,不需要重新启动计算机。
要查看R_LIBS_USER设置为: ?Sys.getenv()
阅读help(Startup)
很有用。
如果在安装新版本的R或其他方式之后,您的默认软件包库已经被更改,那么您可以附加这两个库,以使用下面的命令来使用所有的软件包。 获取现有的库path:
.libPaths()
现在,设置现有的和旧的path:
.libPaths(c(.libPaths(), "~/yourOldPath"))
希望它有帮助。
我读了自述文件。 在那里,他们提到在命令行中使用.libPaths()来检查哪些path在那里。 我早些时候有2个库path。 当我使用命令.libpath(“C:/ Program Files / R / R-3.2.4revised / library”)时,我改变了库的path。 当我再次在命令行键入.libPaths()时,它显示了正确的path。 希望这可以帮助
getwd()
[1]“C:/ Users /………./ software / My R studio”#用双引号复制上面的链接
.libPaths(new="C:/Users/............/software/My R studio") #your default path will change for installing pakages
我正在研究这个,因为R有安装到默认位置的问题,而不是把包放入临时文件夹。 事实certificate,这是Mcaffee Endpoint Security的最新更新,显然与R有关。您可以在安装软件包时禁用威胁防护,并且它可以正常工作。