Chr*_*oph 4 debugging r rstudio data.table
我在调试模式下运行RStudio,以检查程序包中的某些功能(该程序使用data.table,并且已运行2年)。现在,我在某些功能上面临以下情况:
routes[J(x1, y1, x2, y2), nomatch = 0L]
Run Code Online (Sandbox Code Playgroud)
J(x1,y1,x2,y2)中的错误:找不到函数“ J”
如前所述:此程序包有效且library(data.table)
已设置。
现在我想,我按照这里的建议进行了小检查- 环境未更改:
dt = data.table( id = 1L, start = c( 9, 21, 5 ), end = c( 10, 22, 7 ) )
data.table::setkey(dt, "start")
dt[J(1), nomatch = 0L]
Run Code Online (Sandbox Code Playgroud)
空的data.table(0行),共3个列:id,start,end
我得到正确的结果?我每个人都有一个主意,如何创建可复制的示例,我会尝试。对我来说这没有任何意义...所以我再次尝试,但是
routes[J(x1, y1, x2, y2), nomatch = 0L]
Run Code Online (Sandbox Code Playgroud)
J(x1,y1,x2,y2)中的错误:找不到函数“ J”
任何提示高度赞赏
屏幕截图:
在data.table中具有多个参数的可重现示例:
library(data.table)
r <- data.table::data.table(lat1 = numeric(0), lng1 = numeric(0),
lat2 = numeric(0), lng2 = numeric(0),
time = numeric(0))
data.table::setkey(r, lat1, lng1, lat2, lng2)
lat1 = 1
lat2 = 2
lng1 = 11
lng2 = 22
li <- data.table::data.table(lat1=lat1, lng1=lng1, lat2=lat2, lng2=lng2, time=time)
r <- rbindlist(list(r, li))
data.table::setkey(r, lat1, lng1, lat2, lng2)
r[J(1, 11, 2, 22), nomatch = 0L]
# lat1 lng1 lat2 lng2 time
# 1: 1 11 2 22 <function>
r[J(1, 11, 2, 0), nomatch = 0L]
# Empty data.table (0 rows) of 5 cols: lat1,lng1,lat2,lng2,time
But still:
routes[J(1, 11, 2, 22), nomatch = 0L]
# Error in J(1, 11, 2, 22) : could not find function "J"
Run Code Online (Sandbox Code Playgroud)
J
不是功能。它是在评估之前被替换的别名:
https://github.com/Rdatatable/data.table/blob/master/R/data.table.R#L102
我怀疑routes
不是data.table。
在此处添加我的评论,因为它们说明了解决问题的思路:
我已经回答了一个非常相似的问题,即有人正在寻找该.
功能。因此,我对此很确定,只需要在源代码中搜索即可J
。一旦我确认这是一个类似的别名.
,就很容易推断出[.data.table
代码无法调用的名称。
您调用了[
其中(有多个)2个参数。因此,那里没有错误。仅当评估第一个参数时,您才能得到错误。
归档时间: |
|
查看次数: |
74 次 |
最近记录: |