data.table向后滚动整数和数字列之间的连接

时间:2014-08-18 19:22:59

标签: r join data.table

今天遇到了涉及data.table滚动连接的意外行为。我想在整数类型列和数字类型列之间进行滚动连接。正向滚动按预期工作,但向后滚动没有。

dt1<-data.table(x=as.integer(c(1,2)))
dt2<-data.table(x=c(1.5))

setkey(dt1, "x")
setkey(dt2, "x")

dt1[dt2, roll=TRUE] #Expected behavior
   x
1: 1

dt1[dt2, roll=-Inf] #Unexpected behavior
   x
1: 1

这是一个错误还是记录了这种行为?只是猜测但看起来像data.table在内部将数字列转换为整数而不是将整数列转换为数字。

1 个答案:

答案 0 :(得分:2)

这是预期的行为,尽管有埋藏的警告。会发生的事情是dt2$x被强制转换为整数,因此你的两个卷都没有做任何事情而且它是一个直接合并的值为1.

要查看警告,请使用verbose=TRUE

dt1[dt2, verbose = TRUE]
#Coercing 'double' column i.'x' to 'integer' to match type of x.'x'. Please avoid coercion for efficiency.
#Starting bmerge ...done in 0 secs
#   x
#1: 1