data.table是否导出测试.internal.selfref标记的方法?若无,该如何测试?
定位data.table中“Invalid .internal.selfref detected and fixed”警告的根本原因
问题背景
- 使用data.table开发代码时,五次触发
Invalid .internal.selfref detected and fixed警告,需定位根本原因 - 代码在特定条件下会对data.table执行导致复制的操作,但触发路径较长,代码检查未发现可疑点
- 定位缺陷前无法生成最小可复现示例(MRE),也无法保证生成的data.table完整性
尝试的定位方法与障碍
- 计划通过大量插入
stopifnot()调用定位无意复制缺陷,但无法编写有效的.internal.selfref()测试方法 - 《Writing R Extensions》第5.13节指出该方法无法用R编写,确认data.table存在触发该警告的C语言内部方法
- 相关问题对
.internal.selfref有详细解释,但未说明data.table用户如何测试该标记
更新说明
- 目前正在开发新包,不期望data.table的属性在复制并转为tibble后能被可靠保留
- 定义了一个S3类:命名列表,其中一个元素是存储数据的tibble,其余元素为该tibble的元数据——真是一朝被蛇咬,十年怕井绳!
内容的提问来源于stack exchange,提问作者Clark Thomborson
相关产品推荐
相关产品推荐

