r - 我可以在 data.table 连接中访问 `j` 中的重复列名吗?

标签 r data.table

如果我尝试连接两个具有相同列名的 data.table,则 .1附加到其中一个名称,但我似乎无法访问 j 中的名称DT[]的一部分表达。

示例:

DT1 = data.table(name = letters, value = rnorm(26))
DT2 = data.table(name = letters, value = rnorm(26))
setkey(DT1, name)
DT1[DT2, value.1 - value]       # this doesn't work
DT1[DT2][, value.1 - value]     # this works

这个问题的动机是我认为单个调用会更快,事实证明并非如此,导致了一个单独的问题:Why is DT1[DT2][, value1-value] faster than DT1[DT2, value1-value] on data.table with fewer columns?

最佳答案

可以引用idata.table的列,即DT2的列,前缀为如下:

DT1[DT2, list(val=i.value-value)]
   name val
1:    a   1
2:    b   1
3:    c   1
4:    d   1
5:    e   1

# Data used
DT1 <- data.table(name=letters[1:5], value=2:6)
DT2 <- data.table(name=letters[1:5], value=3:7)
setkey(DT1, name)

关于r - 我可以在 data.table 连接中访问 `j` 中的重复列名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17718842/

相关文章:

r - 基于不等时间戳连接data.tables

r-如何从列值中删除特定字符串

c++ - 链接 Boost 正则表达式

r - mclapply 与 for 循环绘图 : speed and scalability focus

r - 在data.table或dplyr中的列之间进行计算?

r - 如何反转R中模式中数据帧的顺序

r - 使用 data.table 写入和加载 JSON 字符串

r - 如何避免用data.table打印行号?

r - 在 R 中创建动态函数的错误

r - 编写 R 包时在 data.frame 中引用列的最佳实践