gpt4 book ai didi

r - 将向量分配给 data.table 列时出现打印错误

转载 作者:行者123 更新时间:2023-12-04 12:04:24 25 4
gpt4 key购买 nike

为简洁起见编辑:

我有一对预先分配的 data.tables,每个表有几万行,每个都有几列。我试图从一个表中聚合一列并将结果分配给另一个表。

问题是我在分配时遇到以下错误:

Error in SYS[[length(SYS) - 3L]][[1L]] == "knit_print.default" : 
comparison (1) is possible only for atomic and list types

代码本身不会崩溃,但是当我查看/打印返回值时,错误消息基本上取代了数据表。或者它似乎是这样做的。

除了data.table的Github源代码之外,谷歌搜索绝对找不到任何东西。所以我看了看它,唯一相似的是大约 45-50 行,似乎是关于在就地分配期间抑制/延迟打印输出。我找不到关于此错误的其他文档。

我还没有能够创建一个 MRE(仍在尝试),因为剥离代码最终会得到工作示例,所以很明显我错过了破坏它的东西。我怀疑当/如果我找到它,我将能够回答我自己的问题。

我发布这个是因为我希望这里有人可能知道错误意味着什么,这将有助于我在我的代码中查明问题并修复它或围绕它创建一个 MRE 以提交错误报告。

四处寻找我已经确定源代码中的分配失败(仅对一个表,另一个没有问题),但中断执行并将相同的分配复制到控制台工作正常。所以这似乎不是我的语法或数据的问题。

更新:最小可重复示例

3天后,我查明了问题所在。
alloc_out <- function(annot = c("a", "b")) {
Genes <- data.table("parent" = annot, flag = NA)
ro <- structure(list("Genes" = Genes), class="dtu")
ro$Genes[, flag := TRUE] # This causes the error message
# when executed from source,
# but works in console.
return(ro)
}

R 版本:OSX El Capitan 上的 RStudio 中的 3.2.4//
数据表版本:1.9.6

最佳答案

正如我所怀疑的那样,查明错误和创建 MRE 是相辅相成的(并按此顺序)。

我的代码中的问题是由这一行引起的:

ro <- structure(list("Genes" = Genes), class="dtu")

具体由类属性。出于某种原因(这在 strucutre() 的文档中并不明显),该属性破坏了它。如果我省略属性分配,一切都会按预期工作。

这并不能真正解释为什么在更深层次上发生错误。是什么导致了我的代码。

关于r - 将向量分配给 data.table 列时出现打印错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38016170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com