r - 动态构建查找多列的调用

标签 r dynamic data.table lookup

如何使用字符向量变量作为参数动态查找多个字段并按引用添加。在下面的情况下,我想查找两列并去掉 i.其中前缀。当然,它们可以覆盖已存在的同名列。

library(data.table)
set.seed(1)
ID <- data.table(id = 1:3, meta = rep(1,3), key = "id")
JN <- data.table(idd = sample(ID$id, 3, FALSE), value = sample(letters, 3, FALSE), meta = rep(1,3), key = "idd")
select <- c("value","meta") # my fields to lookup
j.lkp <- call(":=", select, lapply(paste0("i.",select), as.symbol))
j.lkp
# `:=`(c("value", "meta"), list(i.value, i.meta))
ID[JN, eval(j.lkp)]
# Error in eval(expr, envir, enclos) : could not find function "i.value"
ID[JN, `:=`(c("value", "meta"), list(i.value, i.meta))]
#    id meta value
# 1:  1    1     x
# 2:  2    1     v
# 3:  3    1     f

我知道 similar question但是这个在加入期间要求矢量化参数并直接构建调用 j .
编辑:我知道我可以使用 .SDcols 做到这一点但后来我无法通过引用执行此操作

最佳答案

这对我来说似乎是最直接的方法:

ID[JN, (select) := mget(paste0('i.', select))]

关于r - 动态构建查找多列的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30468455/

相关文章:

r - 在 ggmap 上叠加 ggplot、geom_polygon choropleth 会出现错误

php - 保存动态创建页面的原始 html

C# - 来自条件列表的动态 linq

r - 如何将列表列表从宽变长

r - 如何使用 fread 将制表符分隔的文件读入 data.table?

r - 如何从一个数据框中的字符中提取字符串并放入新表中

r - 当某些部分为空时如何转换日期或日期时间字段; na.omit 失败

r - 加速匹配固定字符串 %in%/%like% 与 bool 输出

python - 动态添加 ManyToMany 关系到 Django 对象

r - 在 R 中循环 data.table 的行