如何在R中安装dplyr 1.0.10版本?编译报错求助
解决dplyr 1.0.10在Apple Silicon Mac上编译失败的问题
问题背景
使用dplyr 1.1.0时,mfdb包的mfdb_dplyr_prey函数出现错误,因此尝试降级安装dplyr 1.0.10,执行以下代码后编译失败:
url_dplyr_1.0.10 <- "https://cran.r-project.org/src/contrib/Archive/dplyr/dplyr_1.0.10.tar.gz" install.packages(url_dplyr_1.0.10,repos=NULL,type="source")
编译错误信息
核心错误为:
clang: error: the clang compiler does not support '-march=native'
完整错误日志:
trying URL 'https://cran.r-project.org/src/contrib/Archive/dplyr/dplyr_1.0.10.tar.gz' Content type 'application/x-gzip' length 884984 bytes (864 KB) ================================================== downloaded 864 KB * installing *source* package ‘dplyr’ ... ** package ‘dplyr’ successfully unpacked and MD5 sums checked ** using staged installation ** libs clang++ -arch arm64 -std=gnu++14 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -O3 -march=native -c chop.cpp -o chop.o clang: error: the clang compiler does not support '-march=native' make: *** [chop.o] Error 1 ERROR: compilation failed for package ‘dplyr’ * removing ‘/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/dplyr’ * restoring previous ‘/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/dplyr’ Warning in install.packages : installation of package ‘/var/folders/zj/1863w5hj19vbt381ctytbhx00000gn/T//RtmpwaPvih/downloaded_packages/dplyr_1.0.10.tar.gz’ had non-zero exit status
系统环境信息
sessionInfo() # R version 4.2.2 (2022-10-31) # Platform: aarch64-apple-darwin20 (64-bit) # Running under: macOS Monterey 12.6.3 # # Matrix products: default # # LAPACK: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRlapack.dylib # locale: # [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 # # attached base packages: # [1] stats graphics grDevices utils datasets methods base # # other attached packages: # [1] rstudioapi_0.14 ggplot2_3.4.0 mfdb_7.3-1 dplyr_1.1.0
解决方案
方法1:替换编译参数
Apple Silicon的clang不支持-march=native,安装前临时设置适配的编译参数:
Sys.setenv(CXXFLAGS = "-O3 -mcpu=apple-m1") install.packages(url_dplyr_1.0.10, repos = NULL, type = "source")
方法2:使用预编译二进制包
避免源码编译,用pak包自动匹配适合系统的预编译版本:
# 先安装pak(未安装时执行) install.packages("pak") # 安装指定版本dplyr pak::pak("dplyr@1.0.10")
方法3:优先修复mfdb兼容性
如果降级dplyr只为解决mfdb_dplyr_prey的问题,先尝试更新mfdb包,看是否已适配dplyr 1.1.0:
install.packages("mfdb")
内容的提问来源于stack exchange,提问作者williantafsilva
相关产品推荐
相关产品推荐

