如何在本地安装R包时指定共享驱动器为依赖来源?
嘿,这个问题我之前帮同事解决过类似的,咱们直接说可行的方案:
核心解决方法:指定依赖查找路径
你可以在安装本地包时,明确告诉R去共享驱动器的库中查找依赖,不用把依赖也装到本地(完全符合IT不让往共享驱动器装包的要求)。
具体命令是这样的:
# 以安装arules为例,把新包装到本地默认路径,从共享路径找依赖 install.packages("arules", lib = .libpaths()[1], lib.loc = .libpaths()[2])
参数解释:
lib = .libpaths()[1]:强制把新包安装到IT指定的本地默认路径(.libpaths()的第一个元素就是默认安装路径)lib.loc = .libpaths()[2]:告诉R去共享驱动器的库(.libpaths()的第二个元素)里找所需的依赖包,不用重新下载安装这些依赖
这样就能避开“无法访问其他库/包”的错误,因为R会直接用共享里已有的依赖,不会再尝试把依赖装到本地。
可选:永久简化命令(不用每次都写lib.loc)
如果不想每次安装都加lib.loc参数,可以修改你的R启动配置文件.Rprofile:
- 在R里运行
file.edit("~/.Rprofile")打开配置文件 - 添加下面一行代码:
# 确保共享路径在R的包查找列表里,且本地路径是默认安装位置 .libPaths(c(.libPaths()[1], .libPaths()[2]))
- 保存后重启R,之后安装包时只需要运行
install.packages("package_name"),R会自动遍历所有.libPaths()里的路径查找依赖,同时默认把新包装到本地。
注意事项:
- 因为你用的是R-3.4(比较旧的版本),部分新包可能不兼容,但你提到指定共享路径能安装成功,说明共享里的依赖版本是匹配的,这个方法应该没问题。
- 如果还是遇到某个依赖找不到的情况,可以先确认共享驱动器里是否真的有这个依赖包,运行
packageVersion("依赖包名", lib.loc = .libpaths()[2])就能检查。
内容的提问来源于stack exchange,提问作者CrowsNose
相关产品推荐
相关产品推荐

