dplyr 逆向依赖失败报告(revdep/failures.md)深度解读:28 个安装失败包背后的 API 兼容性变更
数据分析【免费下载链接】dplyrdplyr: A grammar of data manipulation项目地址https://gitcode.com/gh_mirrors/dp/dplyr点击查看免费下载revdep/failures.md是 dplyr 仓库在开发版本1.2.1.9000见 DESCRIPTION发布前执行逆向依赖reverse dependency检查后生成的失败清单对 5393 个下游包5389 个来自 CRAN、4 个来自 Bioconductor分别用「CRAN 版 dplyr」与「开发版 dplyr」运行R CMD check最终有 28 个包未能完成检查详见 revdep/cran.md。本文以该报告为主体逐一讲解其条目结构、状态分类与各类失败根因并结合仓库中的 NEWS.md、R/源码与 revdep/README.md 交叉验证帮助下游包维护者快速定位「哪些失败真的由 dplyr 变更引起、哪些只是第三方环境问题」并给出具体的迁移与排查方法。一、报告定位dplyr 生态兼容性检查的第一道哨兵1.1 revdep 目录里四份文件的分工仓库根目录下revdep/目录集中存放逆向依赖检查的全部产出文件作用revdep/README.md汇总总览Failed to check (28)与New problems (172)两张索引表revdep/cran.md面向 CRAN 的摘要5393 个逆向依赖的检查规模、172 个新问题、24 个未能检查的包及其首行错误revdep/failures.md本文主体每个失败包的完整检查日志Devel / CRAN 双版本对照revdep/problems.md172 个「新问题」tests 报错、examples 报错、NOTE/WARNING 等的详细清单四份文件的关系可以概括为README.md是指针目录cran.md是给 CRAN 维护者看的摘要failures.md记录「连安装都失败」的最严重一级problems.md记录「能安装但检查出问题」的次一级。本文聚焦最严重的failures.md。1.2 检查机制同一包跑两遍对比得出「新失败」从 revdep/cran.md 可确认检查方式We checked 5393 reverse dependencies (5389 from CRAN 4 from Bioconductor), comparing R CMD check results across CRAN and dev versions of this package.即每个下游包都会在两种 dplyr 环境下各跑一次R CMD checkDevel使用本仓库的开发版 dplyr当前为1.2.1.9000CRAN使用 CRAN 上已发布的最新稳定版 dplyr。日志目录也遵循这一约定例如amberr的日志分别位于/tmp/workdir/amberr/new/amberr.Rcheck/00install.outDevel与/tmp/workdir/amberr/old/amberr.Rcheck/00install.outCRAN。new/对应新dev版本、old/对应旧CRAN版本这是revdepcheck工具的标准目录约定。正是这种「双版本对照」设计让failures.md能回答一个关键问题某个下游包装不上到底是不是 dplyr 的锅判断标准很直观只有Devel 段报错、CRAN 段正常 → 失败极可能由 dplyr 的开发版变更引入属于Newly brokenDevel 与 CRAN两段都报错→ 失败与 dplyr 的本次变更无关属于In both两段都正常Status: OK却仍被列入报告 → 属于「安装前检查阶段就终止」的Error before installation类。二、逐条读懂 failures.md 的条目结构报告中每个失败包的结构完全一致以amt (0.3.0.0)为例# amt (0.3.0.0) * GitHub: https://github.com/jmsigner/amt * Email: mailto:jsignergwdg.de * GitHub mirror: https://github.com/cran/amt Run revdepcheck::cloud_details(, amt) for more info ## Newly broken * checking whether package amt can be installed ... ERROR Installation failed. See /tmp/workdir/amt/new/amt.Rcheck/00install.out for details. ## Installation ### Develinstallingsourcepackage amt ... ... Error: object select_vars is not exported by namespace:dplyr ERROR: lazy loading failed for package amt### CRAN...DONE (amt)各字段含义如下包名与版本号如amt (0.3.0.0)部分包版本号为NA如CytoML (NA)表示检查环境未能获取到元数据。联系信息GitHub 主页、维护者邮箱、CRAN 镜像供维护者认领问题。Run revdepcheck::cloud_details(, 包名)官方提供的复现入口调用revdepcheck包的cloud_details()可在云端重跑该包的完整检查并下载日志。状态标签分类In both/Newly broken/Newly fixed/Error before installation语义见下节。Installation → Devel / CRAN 两段日志最原始的安装输出是根因分析的唯一权威证据。2.1 四类状态标签的语义结合 revdep/README.md 的索引表其中__1__表示相对 CRAN 版新增的错误计数28 个失败包可归为四类状态含义涉及包In bothDevel 与 CRAN 两版 dplyr 下都安装失败与 dplyr 本次变更无关amberr、bayesdfa、EcoEnsemble、galvanizer、ggmosaic、kerastuneR、multinma、rshift、stoRy、tidyjson、tricolore、TriDimRegressionNewly broken仅 Devel 版 dplyr 下安装失败极可能由 dplyr 开发版变更引入amt、bootnet、FairMclus、GOxploreR、IVPP、kerntools、RcmdrPlugin.RiskDemoNewly fixed检查中同时出现「新修好」的条目如 FairMclus 的依赖检查 NOTE 变为正常FairMclusError before installation尚未进入正式安装阶段即终止或检查环境无法获取包CytoML、DSMolgenisArmadillo、dsTidyverse、dsTidyverseClient、flowWorkspace、loon.shiny、NanoMethViz、pkgstats、quanteda一个值得注意的细节failures.md收录 28 个条目而 revdep/cran.md 的「Failed to check」列表只汇总了 24 个包——被排除的 4 个CytoML、flowWorkspace、NanoMethViz、pkgstats正是版本号为NA且两段日志均为空的条目说明它们在检查环境中根本没能进入正常检查流程。2.2 FairMclus 的「一边新坏、一边新好」FairMclus (2.2.1)是唯一同时出现两个状态标签的包Newly broken安装阶段报object id is not exported by namespace:dplyrNewly fixed原先checking dependencies in R code ... NOTE未使用base、data.table命名空间在开发版下消失。这说明逆向依赖检查并非单向恶化——dplyr 的某些改动会修好旧问题同时可能引入新问题因此failures.md需要同时追踪两条时间线。三、失败根因归类28 个包其实只对应六种病因将 28 个包的安装日志逐条对读后可以发现绝大多数失败可以归入以下六类根因。其中只有第一类7 个包真正与 dplyr 的 API 变更相关其余均为下游依赖、工具链或环境问题。3.1 根因一与 dplyr 强相关已移除的旧 API 仍在被引用这是Newly broken的核心病因共 7 个包报错清一色是object xxx is not exported by namespace:dplyr——即它们调用了曾经由 dplyr 导出、但在开发版中已被彻底移除的函数包引用的已移除对象CRAN 版表现amt (0.3.0.0)select_vars安装成功bootnet (1.6)id安装成功FairMclus (2.2.1)id安装成功GOxploreR (1.2.8)id安装成功IVPP (1.1.1)id安装成功kerntools (1.2.0)id安装成功RcmdrPlugin.RiskDemo (3.2)location安装成功以bootnet为例Devel 日志明确显示Error: object id is not exported by namespace:dplyr Execution halted ERROR: lazy loading failed for package bootnet而同一包的 CRAN 段日志正常收尾于* DONE (bootnet)。两者唯一差异就是 dplyr 版本因此可断定这是 dplyr 开发版移除旧 API 导致的「新破坏」。源码证据NEWS.md 的「Removed」章节完整记录了这三组对象的移除历史id()0.5.0 起弃用2016-06现已移除。官方建议改用vctrs::vec_group_id()若包内通过 NSE非标准求值隐式依赖变量id需要在包内某个文件中加入utils::globalVariables(id)向 R 声明id是列名NEWS.mdselect_vars()与select_vars_()0.8.4 起弃用2020-01现已移除改用tidyselect::vars_select()NEWS.md同批移除的还有rename_vars()、select_var()、current_vars()分别对应tidyselect::vars_rename()、vars_pull()、peek_vars()location()与changes()1.0.0 起弃用改用lobstr::ref()NEWS.md。从当前源码看dplyr 已不再提供这些符号在R/目录中搜索select_vars只命中内部函数vars_select_syms()见 R/colwise-select.R而列选择逻辑统一委托给tidyselect::vars_select()见 R/colwise.RNAMESPACE中也不再导出id。这正是下游包报not exported的直接原因。迁移建议如果你维护的包依赖这些函数应按以下对照迁移已移除对象现代替代备注id()vctrs::vec_group_id()生成分组标识当前 dplyr 生态中consecutive_id()见 R/consecutive-id.R与row_number()见 R/rank.R也是常见的替代方案select_vars()/select_vars_()tidyselect::vars_select()字符向量 选择帮助器rename_vars()/select_var()/current_vars()tidyselect::vars_rename()/vars_pull()/peek_vars()—location()/changes()lobstr::ref()对象内存结构分析3.2 根因二与 dplyr 无关purrr 的at_depth已被移除amberr、galvanizer、kerastuneR、stoRy、tidyjson 五个包全部报同一个错Error: object at_depth is not exported by namespace:purrr关键在于这五个包在Devel 与 CRAN 两段日志中都报同样的错属于In both。也就是说无论 dplyr 是哪个版本它们都装不上问题根源在下游包对purrr::at_depth()的依赖与 dplyr 的本次变更无关。这类条目出现在failures.md的意义在于完整记录生态现状避免维护者误以为是 dplyr 引入的回归。3.3 根因三第三方依赖缺失或不可用bayesdfa (1.3.4)与TriDimRegression (1.0.3)两段日志均为Error in loadNamespace(x) : there is no package called rstantools说明检查环境缺少其配置期依赖rstantools属于环境准备问题In both。loon.shiny (1.0.3)checking package dependencies ... ERROR / Packages required but not available: loon, loon.ggplot。这两个依赖未收录在 CRAN检查环境无法安装属于Error before installation。3.4 根因四编译期资源或工具链问题EcoEnsemble (1.1.2)与multinma (0.8.1)两者都是含 Stan/C 代码的包日志最终均停在g: fatal error: Killed signal terminated program cc1plus compilation terminated. make: *** [.../Makeconf:209: stanExports_....o] Error 1 ERROR: compilation failed for package EcoEnsemble从日志可以推断编译进程cc1plus被系统直接终止这是典型的资源受限如内存不足触发 OOM-killer或编译配额限制导致的失败且两段日志完全一致In both与 dplyr 无关。rshift (3.1.2)Rust 工具链版本错配。日志显示使用cargo 1.75.0构建时error: failed to parse lock file at: .../Cargo.lock Caused by: lock file version 4 requires -Znext-lockfile-bump make: *** [Makevars:28: rust/target/release/librshift.a] Error 101即其Cargo.lock的格式版本高于当前 cargo 版本所能解析需要升级 Rust 工具链或重建 lockfile与 dplyr 无关In both。3.5 根因五下游可视化包的 API 冲突ggmosaic (0.3.3)object is.waive not foundIn both说明其依赖的 ggplot2 版本移除了内部对象。tricolore (1.2.4).onLoad failed in loadNamespace() for ggtern错误为ggplot2::element_line object properties are invalid: lineend must be character or NULL, not S3arrow即ggtern与当前 ggplot2 版本的对象属性校验不兼容In both。3.6 根因六安装前检查即终止Error before installationCytoML、flowWorkspace、NanoMethViz、pkgstats版本号NADevel/CRAN 两段日志均为空未进入实际检查。DSMolgenisArmadillo、dsTidyverse、dsTidyverseClient日志完整走完checking ... OK并输出Status: OK却在「安装前」被标记——即这两个 DataSHIELD 相关包本身没问题是报告归类/收集中途终止。quanteda (4.3.1)Devel 段日志为空CRAN 段显示Status: OK。四、如何用这份报告排查自己的包4.1 三步定位法查状态标签Newly broken→ 优先怀疑 dplyr 开发版变更In both→ 与 dplyr 无关转向第三方依赖。对读 Devel / CRAN 两段日志找到 Dev 段独有、CRAN 段没有的那条Error:行它就是破坏源。对照 NEWS.md在开发版文件顶部章节与历史版本的「Removed / Deprecated」章节中检索该报错对象名确认移除时间线与替代函数。4.2 复现与深入排查报告为每个包都给出了复现指令revdepcheck::cloud_details(, amberr)revdepcheck::cloud_details()是revdepcheck包提供的云端复现接口将包的完整检查在隔离环境中重跑并返回日志适合验证「换一台机器/换一个 dplyr 版本」后失败是否仍然复现。本地复现的标准流程则是install.packages(revdepcheck) library(revdepcheck) revdep_check() # 检查全部逆向依赖 revdep_report() # 重新生成 revdep/ 下的报告注意本仓库的revdep/目录是只读的检查产物不建议也不需要通过修改仓库文件来「修复」报告本身。4.3 数据规模与时效性说明本报告对应的 dplyr 版本为1.2.1.9000开发版见 DESCRIPTION检查于该版本发布前执行。表内所有「能装/不能装」结论仅对本次检查环境成立——例如bayesdfa缺少rstantools、loon.shiny缺少loon都取决于云端环境的依赖安装策略不能推广为「这些包永远装不上」。引用本报告数据时应同时注明版本与检查环境Ubuntu 24.04、R 4.5.1见日志头部。五、给下游包维护者的行动清单如果状态是Newly broken且报错为not exported by namespace:dplyr按第三节的迁移对照表替换id()、select_vars()、location()等旧 API升级tidyselect、vctrs依赖并重新检查。如果状态是In both无需等待 dplyr 侧修复直接排查 purrr 版本、rstantools 等环境依赖、C/Rust 工具链或下游绘图包的版本冲突。如果包内通过 NSE 引用列名如id即使不直接调用id()函数也会因dplyr不再导出该符号而在懒加载阶段报错按 NEWS.md 的建议加入utils::globalVariables(id)即可。定期跟踪 NEWS.md 的 Removed 章节dplyr 遵循「先弃用、后移除」的生命周期策略如id()自 0.5.0 弃用多年后才移除提前迁移可避免在开发版上「突然」失败。六、小结revdep/failures.md不是一份简单的报错堆砌而是一份经过设计的兼容性证据链双版本Devel/CRAN对照日志 状态标签 复现指令三者结合让任何人无论是 dplyr 维护者还是下游包作者都能在几分钟内判断「这次失败是否由 dplyr 引起」。在本轮检查中真正由 dplyr 开发版 API 移除引起的Newly broken只有 7 个包集中在id()、select_vars()、location()三组早已弃用的符号上其余 21 个条目则如实记录了第三方依赖、工具链与编译环境的生态现状。对下游维护者而言这份报告加上 NEWS.md 的 Removed 章节就是一份现成的迁移路线图。赞分享数据分析【免费下载链接】dplyrdplyr: A grammar of data manipulation项目地址https://gitcode.com/gh_mirrors/dp/dplyr点击查看免费下载相关推荐ggplot2 反向依赖检查失败报告深度解读从 revdep/failures.md 到生态影响评估ggplot2 反向依赖检查失败报告深度解读从 revdep/failures.md 到生态影响评估 本文以 ggplot2 仓库 revdep/failur数据可视化dplyr 反向依赖检查revdep报告解读172 个生态级问题与 API 变迁全景dplyr 反向依赖检查revdep报告解读172 个生态级问题与 API 变迁全景 dplyr 是 R 生态中数据操作语法A Grammar of数据分析ggplot2 反向依赖检查Revdep报告解读从 problems.md 看 API 变更对下游包的影响ggplot2 反向依赖检查Revdep报告解读从 problems.md 看 API 变更对下游包的影响 本文以 ggplot2 仓库 revdep/p数据可视化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

大学生活复盘:从时间管理到个人成长的四年实战指南

大学生活复盘:从时间管理到个人成长的四年实战指南

做一次完整的大学生活回顾,其实比很多人想象中要难。难的不是记不住,而是那些最值得记的瞬间,往往没有成绩单,没有照片,也说不清具体发生在哪一天。它们更像宿舍窗台上晒过四年的旧书,平时摆着不起眼&#…

2026/10/14 15:59:05 阅读更多 →
如何将OpenTag部署到Railway:双服务生产架构完整教程

如何将OpenTag部署到Railway:双服务生产架构完整教程

【免费下载链接】OpenTag OpenTag: The Channels SDK starter application, a self-hosted AI on-call triage bot for Slack and Microsoft Teams, built with AG-UI and LangGraph. Fork it and ship your own. 项目地址: https://gitcode.com/gh_mirrors/open/Op…

2026/10/14 15:59:05 阅读更多 →
广东工业大学数据结构课设与实验:可运行、可调试、可教学的完整工程包

广东工业大学数据结构课设与实验:可运行、可调试、可教学的完整工程包

简介:本资源是广东工业大学《数据结构》课程设计与实验的完整工程实践包,面向计算机类专业本科生及自学数据结构的学习者,聚焦B树实现与池塘降雨模拟两大典型课设课题,有效支撑课程设计、毕业设计、大作业及工程实训等场景。压缩包…

2026/10/14 15:59:05 阅读更多 →

最新新闻

AI Agent状态清理:超时重试背后的系统性风险与四维治理

AI Agent状态清理:超时重试背后的系统性风险与四维治理

1. 这不是超时和重试的问题,是状态管理的系统性溃败“给 AI Agent 加超时和重试后,我才发现真正的坑在状态清理”——这句话刚在内部技术群刷出来时,我正盯着一个跑了37分钟、卡在waiting_for_tool_execution状态、内存占用飙升到4.2GB却毫无…

2026/10/14 16:41:53 阅读更多 →
嵌入式Qt记事本开发全链路:从交叉编译到中文文件IO

嵌入式Qt记事本开发全链路:从交叉编译到中文文件IO

简介:这是一份基于Qt6开发的跨平台记事本项目源码,面向嵌入式与桌面应用开发初学者及Qt进阶学习者,聚焦GUI界面构建、文件编码处理与轻量级文本编辑功能实现。项目完整呈现了现代C在Qt框架下的典型工程实践,涵盖主窗口&#xff08…

2026/10/14 16:41:53 阅读更多 →
计算机系统概论第一章答案精讲:ISA、微架构与算法性质

计算机系统概论第一章答案精讲:ISA、微架构与算法性质

简介:计算机系统概论(原书第二版)第一章习题答案以PDF形式提供,面向计算机专业学生、考研读者和自学入门者,用于对照教材习题检验对计算机系统基础概念的掌握。内容选自原书附录的精选解答,覆盖冯诺依曼通用…

2026/10/14 16:41:53 阅读更多 →
远视储备与近视防控:从原理到实操的家长指南

远视储备与近视防控:从原理到实操的家长指南

1. 远视储备不是“储备”,而是一笔会不断消耗的视力存款1. 远视储备不是“储备”,而是一笔会不断消耗的视力存款1.1 远视储备到底是什么很多家长第一次听到“远视储备”这个词,是在幼儿园体检或者眼科门诊的报告单上。医生指着上面的数字说&a…

2026/10/14 16:41:53 阅读更多 →
Python数据挖掘实战:K均值聚类从原理到应用

Python数据挖掘实战:K均值聚类从原理到应用

1. 从一个真实需求说起:为什么K均值聚类值得你花时间搞懂做数据挖掘这些年,我越来越觉得,K均值聚类是那种“看起来简单、用起来真香、但踩坑也真不少”的算法。很多刚入门的朋友一听到“无监督学习”四个字就头大,觉得没有标签怎么…

2026/10/14 16:41:53 阅读更多 →
MinGW-w64离线安装包:断网Windows下C/C++工具链部署指南

MinGW-w64离线安装包:断网Windows下C/C++工具链部署指南

简介:MinGW-w64是为64位Windows系统打造的GCC工具链离线安装包,面向需要在Windows环境下学习或开展C语言开发的程序员。压缩包约2000个文件、133.98MB,主要由h头文件、Python脚本、a静态库、pyc编译文件、exe可执行程序、dll动态库及少量c源文…

2026/10/14 16:40:52 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →