R data.table联接-选择i参数中的所有列
连接两个data.table我可以指定列所来自的表,如R data.table联接-选择i参数中的所有列,r,data.table,R,Data.table,连接两个data.table我可以指定列所来自的表,如 X[Y, i.id] # `id` is taken from Y 我的问题是我有一个大约80列的大表。每晚都会发生数据刷新,根据一些参数,一些行会被新版本的表(相同的表,只是新数据)替换 current如何构造j表达式并对其进行评估 nc = names(current)[-1L] nn = paste0("i.", nc) expr = lapply(nn, as.name) setattr(expr, 'names', nc) ex
X[Y, i.id] # `id` is taken from Y
我的问题是我有一个大约80列的大表。每晚都会发生数据刷新,根据一些参数,一些行会被新版本的表(相同的表,只是新数据)替换
current如何构造j表达式
并对其进行评估
nc = names(current)[-1L]
nn = paste0("i.", nc)
expr = lapply(nn, as.name)
setattr(expr, 'names', nc)
expr = as.call(c(quote(`:=`), expr))
> current[new[c(1,3)], eval(expr)]
> current
## id var var2
## 1: 1 11 11
## 2: 2 2 2
## 3: 3 13 13
## 4: 4 4 4
谢谢,与我的解决方案类似,但要优雅得多。最后我做了一个残酷的评估(解析(text=paste0(
:=)(“,paste0(colnm,=”,“I.”,colnm,collapse=“,”))))
。
nc = names(current)[-1L]
nn = paste0("i.", nc)
expr = lapply(nn, as.name)
setattr(expr, 'names', nc)
expr = as.call(c(quote(`:=`), expr))
> current[new[c(1,3)], eval(expr)]
> current
## id var var2
## 1: 1 11 11
## 2: 2 2 2
## 3: 3 13 13
## 4: 4 4 4