r - 通过 data.table 中的变量名在 i 中设置子集

标签 r data.table

假设我有一个 data.table,其中列名在变量中指定。例如,我可能将 dcast 用作:

groups <- sample(LETTERS, 2) # i.e. I don't now the values
dt1 <- data.table(ID = rep(1:2, each = 2), group = groups, value = 3:6)
(dt2 <- dcast(dt1, ID~group, value.var = "value"))
#    ID D Q
# 1:  1 3 4
# 2:  2 5 6

现在我想根据最后两列中的值进行子集化,例如做类似的事情:

dt2[groups[1] == 3 & groups[2] == 4]
# Empty data.table (0 rows) of 3 cols: ID,D,Q

有没有简单的方法? 我发现我可以用 key 做到这一点:

setkeyv(dt2, groups)
dt2[.(3, 4)]
#    ID D Q
# 1:  1 3 4

但是我该怎么做更精细的事情,就像

dt2[groups[1] > 3 & groups[2] < 7]

?

最佳答案

你可以使用get来(从?get)

search by name for an object

:

dt2[get(groups[1]) > 2 & get(groups[2]) == 4]
#   ID A J
#1:  1 3 4

关于r - 通过 data.table 中的变量名在 i 中设置子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38875189/

相关文章:

r 栅格覆盖函数 - landsat 堆栈错误

r - 分组并使用 data.table 选择最小日期

r - 使用 group by 对 data.table 列进行子集化

r - 如何从另一个 Jupyter 笔记本文件获取 R 代码?

r - 上标R平方成图例

r - 为什么列选择的 data.table 表示法会影响速度

删除 data.table 中的所有重复项,添加带有标识符列表的列

r - 如何创建均值和标准差data.table中的列

R,gsub(),在给定某些条件下将 "."替换为 ","

r - xtable 单元格中的换行符