gpt4 book ai didi

r - 三个数据表合并行为不一致

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

我今天上午一直在搜索以尝试确定是否会出现以下故障,但未发现任何故障。有人可以帮我指出相关的讨论吗?否则,我可能会submit as an issue。欣赏它。

library(data.table)

x <- data.table( a = 1:3 )
y <- data.table( a = 2:4 )
z <- data.table( a = 3:5 )

# works
merge( x , y )
# works
merge( y , z )

# fails
merge( x , merge( y , z ) )
# Error in merge.data.table(x, merge(y, z)) :
# A non-empty vector of column names for `by` is required.

# works
merge( merge( x , y ) , z )

最佳答案

这是一个明显的错误。请举报。幸运的是,它应该很容易修复。merge.data.table包含以下代码:

if (is.null(by)) 
by = intersect(key(x), key(y))
if (is.null(by))
by = key(x)
if (is.null(by))
by = intersect(names(x), names(y))
现在,问题在于 y被键入了 key (因为 merge.data.table设置了一个 key ):
x <- data.table( a = 1:3 )
y <- merge(data.table( a = 2:4 ), data.table( a = 3:5 ))
haskey(y)
#[1] TRUE
然后,
intersect(key(x), key(y))
#character(0)
因此,以下 if条件都不是TRUE(我们希望第三个条件在此处应用)。
由于这种情况,在您的最后一种情况下不会发生这种情况:
intersect("foo", NULL)
#NULL
intersect(NULL, "foo")
#character(0)

关于r - 三个数据表合并行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64464386/

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