R 3.5.0安装ggplot2后加载失败、函数找不到问题求助
问题:R 3.5.0加载本地安装的ggplot2失败,在线安装同步报错
环境与操作背景
- 设备:工作笔记本
- 已安装软件:R 3.5.0、RStudio
- 初始操作:从CRAN下载ggplot2、plotly安装包,通过R内置的「Packages -> install package(s) from local file(s)」入口完成本地安装,随后运行测试代码验证功能
测试代码
df <- data.frame(dose=c("D0.5", "D1", "D2"), len=c(4.2, 10, 29.5)) head(df) library(ggplot2) # 基础柱状图 p<-ggplot(data=df, aes(x=dose, y=len)) + geom_bar(stat="identity") p # 横向柱状图 p + coord_flip()
本地安装后的运行报错信息
> library(ggplot2) Error: package or namespace load failed for ‘ggplot2’ in rbind(info, getNamespaceInfo(env, "S3methods")): number of columns of matrices must match (see arg 2) In addition: Warning message: package ‘ggplot2’ was built under R version 4.3.0 > # 基础柱状图 > p<-ggplot(data=df, aes(x=dose, y=len)) + + geom_bar(stat="identity") Error in ggplot(data = df, aes(x = dose, y = len)) : could not find function "ggplot" > p Error: object 'p' not found > > # 横向柱状图 > p + coord_flip() Error: object 'p' not found
补充:在线安装ggplot2的报错日志
尝试执行install.packages("ggplot2")在线安装时返回以下错误:
> install.packages("ggplot2") Installing package into ‘\\lsjsh-mp-ns1/user$/H/R/win-library/3.5’ (as ‘lib’ is unspecified) Warning in install.packages : 'lib = "\\lsjsh-mp-ns1/user$/H/R/win-library/3.5"' is not writable also installing the dependencies ‘lifecycle’, ‘glue’, ‘scales’, ‘withr’ There are binary versions available but the source versions are later: binary source needs_compilation lifecycle 0.2.0 1.0.1 FALSE glue 1.4.0 1.6.2 TRUE scales 1.1.0 1.2.0 FALSE withr 2.2.0 2.5.0 FALSE ggplot2 3.3.0 3.3.6 FALSE Binaries will be installed trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.5/glue_1.4.0.zip' Content type 'application/zip' length 157284 bytes (153 KB) downloaded 153 KB package ‘glue’ successfully unpacked and MD5 sums checked Warning in install.packages : cannot remove prior installation of package ‘glue’ The downloaded binary packages are in C:\Users\H\AppData\Local\Temp\Rtmp2NJuUu\downloaded_packages installing the source packages ‘lifecycle’, ‘scales’, ‘withr’, ‘ggplot2’ trying URL 'https://cran.rstudio.com/src/contrib/lifecycle_1.0.1.tar.gz' Content type 'application/x-gzip' length 99716 bytes (97 KB) downloaded 97 KB trying URL 'https://cran.rstudio.com/src/contrib/scales_1.2.0.tar.gz' Content type 'application/x-gzip' length 270188 bytes (263 KB) downloaded 263 KB trying URL 'https://cran.rstudio.com/src/contrib/withr_2.5.0.tar.gz' Content type 'application/x-gzip' length 102089 bytes (99 KB) downloaded 99 KB trying URL 'https://cran.rstudio.com/src/contrib/ggplot2_3.3.6.tar.gz' Content type 'application/x-gzip' length 3061989 bytes (2.9 MB) downloaded 2.9 MB '\\lsjsh-mp-ns1\user$\H' CMD.EXE was started with the above path as the current directory. UNC paths are not supported. Defaulting to Windows directory. ERROR: failed to lock directory '\\lsjsh-mp-ns1/user$/H/R/win-library/3.5' for modifying Try removing '\\lsjsh-mp-ns1/user$/H/R/win-library/3.5/00LOCK-lifecycle' In R CMD INSTALL Warning in install.packages : installation of package ‘lifecycle’ had non-zero exit status '\\lsjsh-mp-ns1\user$\H' CMD.EXE was started with the above path as the current directory. UNC paths are not supported. Defaulting to Windows directory. ERROR: failed to lock directory '\\lsjsh-mp-ns1/user$/H/R/win-library/3.5' for modifying Try removing '\\lsjsh-mp-ns1/user$/H/R/win-library/3.5/00LOCK-withr' In R CMD INSTALL Warning in install.packages : installation of package ‘withr’ had non-zero exit status '\\lsjsh-mp-ns1\user$\H' CMD.EXE was started with the above path as the current directory. UNC paths are not supported. Defaulting to Windows directory. ERROR: failed to lock directory '\\lsjsh-mp-ns1/user$/H/R/win-library/3.5' for modifying Try removing '\\lsjsh-mp-ns1/user$/H/R/win-library/3.5/00LOCK-scales' In R CMD INSTALL Warning in install.packages : installation of package ‘scales’ had non-zero exit status '\\lsjsh-mp-ns1\user$\H' CMD.EXE was started with the above path as the current directory. UNC paths are not supported. Defaulting to Windows directory. ERROR: failed to lock directory '\\lsjsh-mp-ns1/user$/H/R/win-library/3.5' for modifying Try removing '\\lsjsh-mp-ns1/user$/H/R/win-library/3.5/00LOCK-ggplot2' In R CMD INSTALL Warning in install.packages : installation of package ‘ggplot2’ had non-zero exit status The downloaded source packages are in ‘C:\Users\H\AppData\Local\Temp\Rtmp2NJuUu\downloaded_packages’
成因分析
- 核心版本兼容问题:本地安装的ggplot2是基于R 4.3.0构建的,和本地R 3.5.0跨了大版本。R包跨大版本不兼容是常态,尤其是R 4.0之后对命名空间、S3方法注册的逻辑做了调整,才会出现
rbind合并S3方法信息时列数不匹配的报错。网上“版本差异影响极小”的说法只适用于小版本差(比如3.5.1和3.5.3),跨大版本完全不适用。 - 包安装路径权限与格式问题:R默认将包安装到网络共享盘路径
\\lsjsh-mp-ns1/user$/H/R/win-library/3.5,首先该路径是UNC网络路径,Windows的CMD本身不支持UNC路径作为工作目录;其次日志明确提示该路径不可写,直接导致安装过程无法写入文件、无法清理旧版本包、无法加目录锁,安装必然失败。 - 残留锁文件干扰:之前安装失败留下的
00LOCK-*文件夹没有自动清理,后续安装时检测到锁文件会直接终止流程。 - 安装包版本匹配错误:在线安装时R自动拉取了适配高版本R的源码包,3.5版本的R没有适配这些高版本依赖的API,源码编译安装也会失败。
可行解决步骤
按顺序操作即可解决问题:
- 清理残留损坏文件
完全关闭R和RStudio,打开资源管理器进入路径\\lsjsh-mp-ns1/user$/H/R/win-library/3.5,删除所有名字带00LOCK-前缀的文件夹,同时删除目录下已经安装的ggplot2、glue、lifecycle、scales、withr文件夹,避免旧版本损坏文件干扰后续安装。 - 配置本地可写的包安装路径
在本地非系统盘(比如D盘)新建文件夹,路径设为D:/R/library,路径不要包含中文、空格、特殊字符。打开原生R程序(不要先开RStudio),执行以下命令配置默认安装路径:
后续安装操作都在这个R窗口执行,不要切到RStudio避免路径配置被覆盖。# 把本地路径设为第一优先级的包安装目录 .libPaths(c("D:/R/library", .libPaths())) # 验证路径配置是否生效 .libPaths() - 安装适配R 3.5.0版本的ggplot2
不要直接用默认参数执行安装命令,高版本ggplot2已经停止对R 3.x的支持,指定安装适配3.5版本的预编译二进制包即可:
如果提示有依赖包安装失败,单独给失败的包也加install.packages("ggplot2", type = "binary", dependencies = TRUE)type = "binary"参数安装,二进制包不需要本地源码编译,不会触发UNC路径相关的CMD报错。 - 永久配置与验证
安装完成后执行开头的测试代码,能正常出图就说明配置生效。执行以下命令把本地包路径配置写入R启动文件,后续打开RStudio也会自动加载该配置,不需要重复设置:cat('.libPaths(c("D:/R/library", .libPaths()))', file = file.path(Sys.getenv("HOME"), ".Rprofile"), append = TRUE)
补充说明:如果后续安装其他R包仍频繁出现版本兼容报错,最稳妥的方案是将R升级到4.0以上的长期支持版本,目前绝大多数主流R包都已经停止对R 3.x版本的维护,强行适配3.5版本后续还会遇到同类问题。
内容的提问来源于stack exchange,提问作者user2361290
相关产品推荐
相关产品推荐

