最近有人通过dput()
与我分享了他们的数据表,但出现了一个我之前没有遇到过的错误:
Error: unexpected '<' in: " class = c("data.table", "data.frame"), .internal.selfref = <"
经过一番探索,我发现这是特别涉及到数据表的问题,并且根据这些答案的建议,删除internal.selfref = <pointer: 0x7fd60e036ce0>
就可以成功地分配他们的数据。
然而,我预计会在初学者之间频繁共享这些类型的数据;我还没有找到一个合理/可持续的解决方案来防止这个dput
导出,只能使用临时函数和/或在运行后删除它。
如果我从dput
中的control = c("keepNA", "keepInteger", "niceNames", "showAttributes")
中删除showAttributes
,那么.internal.selfref
就会消失,但结构的其他内容也会消失。
上面链接的问题和答案是5-9年前提供的;我希望可能有一些改进的功能(我显然不知道)可以告诉dput
忽略这个问题,或者在dput
之前我可以对数据表本身做些什么来完全删除.internal.selfref
。
有没有办法提供一个data.table
对象的dput
而不产生.internal.selfref
?
提前感谢。
问题示例:
dattab <- data.table::data.table(a = 1:5, b = 6:10)
dput(dattab)
structure(list(a = 1:5, b = 6:10), row.names = c(NA, -5L),
class = c("data.table", "data.frame"),
.internal.selfref = <pointer: 0x7fd60e036ce0>)
dput
的输出并使用gsub
或类似工具删除 ".internal.selfref*>"(不是实际的正则表达式代码)部分。 - Carl WitthoftsaveRDS
而不是dput
吗?不确定你是如何分享的,但这将创建一个物理副本,可以共享。 - LMc