Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R fast join data.table(潜在错误,报告前检查)_R_Merge_Data.table - Fatal编程技术网

R fast join data.table(潜在错误,报告前检查)

R fast join data.table(潜在错误,报告前检查),r,merge,data.table,R,Merge,Data.table,这可能是个bug。在这种情况下,我将删除这个问题并报告为bug。我想有人来看看,以确保我没有做错事,这样我就不会浪费开发人员的时间 test = data.table(mo=1:100, b=100:1, key=c("mo", "b")) mo = 1 test[J(mo)] 返回整个testdata.table,而不是 test[J(1)] 我相信错误可能来自于test的列名与被mo联接的表的列名相同。其他人也有同样的问题吗?这不是一个bug,而是有记录的行为。这是一个范围界定问题: t

这可能是个bug。在这种情况下,我将删除这个问题并报告为bug。我想有人来看看,以确保我没有做错事,这样我就不会浪费开发人员的时间

test = data.table(mo=1:100, b=100:1, key=c("mo", "b"))
mo = 1
test[J(mo)]
返回整个
test
data.table,而不是

test[J(1)]

我相信错误可能来自于
test
的列名与被
mo
联接的表的列名相同。其他人也有同样的问题吗?

这不是一个bug,而是有记录的行为。这是一个范围界定问题:

test[J(globalenv()$mo)]
   mo   b
1:  1 100

这是一个范围问题,类似于中讨论的问题。因为
test
包含一个名为
mo
的列,所以当计算
J(mo)
时,它返回整个列,而不是在全局环境中找到的
mo
的值,该值被屏蔽。(当然,当你想做一些类似于
test[moI无法解释行为,但是fwiw:
foo=1;test[J(foo)]
的事情时,这种范围界定行为是非常好的。同样的情况也适用于
test[mo]
mo=data。表(1);test[mo]
。另外,
idential(test[J(1)],test[J(mo])
test <- data.table(mo=1:5, b=5:1, key=c("mo", "b"))
mo <-  1
test[browser()]
Browse[1]> J(mo)
#    mo
# 1:  1
# 2:  2
# 3:  3
# 4:  4
# 5:  5
# Browse[1]> 
MO <- 1
test[J(MO)]
#    mo b
# 1:  1 6
mo <- data.table(1)
test[mo]
#    mo b
# 1:  1 6