我遇到以下问题:每次我想通过 renv 特定命令(例如 renv::restore() 或 renv::install("class@7.3-20"))安装包“class”时,我都会收到一条错误消息。但是,如果我运行 install.packages("class",version="7.3-20") 一切正常。
\n我从转速诊断开始:
\n> renv::diagnostics()\nDiagnostics Report [renv 0.17.3]\n================================\n\n# Session Info =======================\nR version 4.3.0 (2023-04-21 ucrt)\nPlatform: x86_64-w64-mingw32/x64 (64-bit)\nRunning under: Windows 10 x64 (build 19045)\n\nMatrix products: default\nRun Code Online (Sandbox Code Playgroud)\n使用 renv 安装“class”会给出以下消息
\n> renv::install("class@7.3-20")\nConsider removing these folders from your R library.\n\nRetrieving \'https://cran.rstudio.com/src/contrib/Archive/class/class_7.3-20.tar.gz\' ...\n OK [file is up to date]\nInstalling class [7.3-20] ...\n FAILED\nError installing package \'class\':\n=================================\n\n* installing *source* package \'class\' ...\n** Paket \'class\' erfolgreich entpackt und MD5 Summen \xc3\xbcberpr\xc3\xbcft\n** using staged installation\n** libs\nusing C compiler: \'gcc.exe (GCC) 12.2.0\'\ngcc -I"C:/PROGRA~1/R/R-43~1.0/include" -DNDEBUG -I"C:\\Users\\mschleri\\AppData\\Local/R/cache/R/renv/extsoft/include" -O2 -Wall -mfpmath=sse -msse2 -mstackrealign -c class.c -o class.o\nclass.c:31:9: error: unknown type name \'Sint\'; did you mean \'int\'?\n 31 | VR_knn1(Sint *pntr, Sint *pnte, Sint *p, double *train, Sint *class,\n | ^~~~\n | int\n.\n.\n.\nmake: *** [C:/PROGRA~1/R/R-43~1.0/etc/x64/Makeconf:265: class.o] Error 1\nERROR: compilation failed for package \'class\'\nRun Code Online (Sandbox Code Playgroud)\n另一方面,安装 class install.packages("class",version="7.3-20") 则没有问题。Rtools 已安装并在 renv 包之外正常工作。难道renv不支持当前的Rtools版本(43)?他们在 github 上仍然有一个未解决的问题来修复 rtools 43 的支持(https://github.com/rstudio/renv/issues/1214)。
\n感谢您的任何建议和帮助!
\n这与 Rtools 没有任何关系,这是你想要做的事情的问题。
该install.packages()函数将忽略您的version参数,因此您将获得最新版本 7.3-22。版本 7.3-20 与 R 4.3.x 不兼容,因为Sint和 相关定义已被删除。
因此,如果您想安装 7.3-20,则需要使用旧版本的 R。