Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R data.table联接-选择i参数中的所有列_R_Data.table - Fatal编程技术网

R data.table联接-选择i参数中的所有列

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

连接两个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)
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