设置R_LIBS_USER和R_LIBS后仍保留Program Files库路径的问题
我完全理解你的困扰——Program Files目录的权限限制确实会给R包管理带来不少麻烦,尤其是弹出的个人库设置对话框真的很烦人。既然你已经设置了环境变量但没解决问题,咱们一步步排查:
1. 先确认环境变量是否被R正确读取
首先在R/RStudio里运行这条命令,看看环境变量是不是真的生效了:
Sys.getenv(c("R_LIBS", "R_LIBS_USER"))
如果输出的结果不是你设置的C:/Users/deca/Desktop/packages,那说明环境变量没被正确加载:
- 如果你是在控制面板设置的环境变量,记得重启R/RStudio(甚至重启电脑,有时候系统环境变量需要重启才能生效);
- 检查环境变量的拼写,有没有大小写错误(Windows环境变量不区分大小写,但最好和R的变量名一致);
- 确保路径里没有空格或者特殊字符(你的路径是Desktop/packages,没问题,但如果有空格要加引号,不过Windows环境变量里直接写路径就行)。
2. 检查R的启动脚本是否覆盖了.libPaths设置
R启动时会加载几个脚本,这些脚本可能会修改库路径:
检查Rprofile.site
运行这条命令找到Rprofile.site的位置:
file.path(R.home("etc"), "Rprofile.site")
打开这个文件,看看有没有类似下面的代码:
.libPaths(c(.libPaths(), "C:/Program Files/R/R-3.4.3/library"))
如果有,把这行注释掉(前面加#)或者删除,保存后重启R。
检查用户目录下的.Rprofile
看看你的用户目录(C:/Users/deca/)里有没有.Rprofile文件,如果有,打开它检查是否有修改.libPaths()的语句,同样注释掉不符合你需求的内容。
3. 关于Program Files路径的说明
其实你看到的C:/Program Files/R/R-3.4.3/library是R的系统库路径,这里存放的是R自带的基础包(比如base、stats这些),正常情况下不建议移除——如果强制移除,可能导致R无法运行基础功能。
你真正需要的是让新安装的包默认到你设置的自定义路径,而不是系统库。如果设置好环境变量后,安装包时还是往系统库装,可以用这条命令设置默认安装路径:
options(repos = c(CRAN = "https://cran.rstudio.com/")) # 先设置CRAN源 options(install.packages.check.source = "no") options(install.packages.lib = "C:/Users/deca/Desktop/packages")
把这段代码放到你的.Rprofile文件里,每次启动R就会自动生效。
4. 彻底避免弹出个人库对话框
如果上面的步骤都做了还是弹对话框,可能是因为R启动时检测到系统库没有写入权限,这时候可以在环境变量里再加一个R_LIBS_SITE,设置为系统库的路径(也就是C:/Program Files/R/R-3.4.3/library),明确告诉R系统库的位置,这样它就不会再提示你创建个人库了。
做完所有步骤后,重启R,再运行.libPaths(),你会看到自定义路径在最前面(这意味着安装包时会优先用这个路径),系统库路径还在,但不会影响你的使用,也不会再弹出烦人的对话框了。
内容的提问来源于stack exchange,提问作者deca




