【发布时间】:2019-07-04 09:08:04
【问题描述】:
我正在整理我从 SQL 转换的一些 data.table 代码。
桌子 x
x <- data.table(a = 1
,b = 2); x
# a b
# 1: 1 2
表 y
y <- data.table(a = 1
,c = 3); y
# a c
# 1: 1 3
默认情况下,以下连接返回所有列
x[y, on=.(a)]
# a b c
# 1: 1 2 3
其中列 a 采用表 i 的值,但名称来自 x 给定格式 x[i]。
我的问题是是否可以只选择表 i 中的所有列。这将是 SQL 中的select i.* from...。这对我来说是无价的,因为实际上我的表 i 和 x 都包含大量列,我想直接嵌套到 data.table 的连接子句中,而不列出 .() 中的所有表 i 的列或进行列选择在单独的行中。
谢谢。
【问题讨论】:
-
你在寻找
x[y, on=.(a), mget(paste0("i.", names(y)))] -
是的。我看到我们必须使用基础 R 并嵌套。没有 data.table 语法吗?刚刚发现如何手动从 x 中选择列 x[y, on=.(a), mget(c(paste0("i.", names(y)), "x.a"))] 谢谢@chinsoon12
-
请参阅“2g) 为什么让 j 如此灵活?”在cran.r-project.org/web/packages/data.table/vignettes/…
-
抱歉,@chinsoon12 我想将我的第一条评论编辑为“我明白了。我们将不得不......”。但只允许在第 1 5 分钟内进行编辑。标点符号重要性的经典案例。感谢您的帮助。也经历过2g :)
标签: r join data.table