首页 > 解决方案 > 在编程模式下从 data.table 中选择行

问题描述

您可以在此答案中找到我的初始解决方案的主要部分。现在我想在程序代码中使用它,并想用变量替换列名。这是我的 MWE,它在最后几行抛出错误:

library(data.table)
set.seed(1)
tb = data.table(g_id = c(1, 1, 1, 2, 2, 2, 3),
                item_no = sample(c(24,25,26,27,28,29,30)),
                time_no = c(100, 110, 120, 130, 140, 160, 170)
                )

# get row with minimum value
# works
tb[, .SD[which.min(item_no)], by = g_id]
# now step by step with variables
mincol = "item_no"
grp = "g_id"
# works
tb[, .SD[which.min(item_no)], by = c(grp)]
# doesn't work
tb[, .SD[which.min(..mincol)], by = c(grp)]

您有什么想法可以使用变量运行此代码吗?

谢谢!

标签: rdata.table

解决方案


一种可能性是使用get

tb[, .SD[which.min(get(mincol))], by = c(grp)]

推荐阅读