【发布时间】:2019-04-30 18:03:38
【问题描述】:
data.table 连接的 on 子句是否可以支持比 (in) 等式更多的表达式?例如,如果我尝试执行
B[A,on=.(name = toupper(name))]
或
B[A,on=.(year = year(date))]
我收到错误消息
[.data.table(B, A, on = .(name = toupper(name))) 中的错误: 在 i 中找不到列 [toupper(name)]
data.table 似乎正在寻找名称为未计算表达式的列,而不是计算表达式。用 name = eval(quote(toupper(name))) 之类的东西替换 name = toupper(name) 似乎也没有帮助。
我总是可以通过在一个或两个输入中添加一个额外的列(在这种情况下为name_upper := toupper(name))然后在连接后删除不需要的列来解决这个问题,但这既笨重又麻烦。
这里可以实现类似 SQL 连接的功能吗?
【问题讨论】:
标签: r join data.table