将函数参数传递给 data.table i

Passing function argument to data.table i

假设我们有一个 data.table

myDT <- data.table(id = c("a", "a", "b", "b", "c"), value = 1:5)
setkey(myDT, id)

我想创建一个函数

fun <- function(id) {
  ...
}

如果

foo <- rep("b", 6)

然后

fun(foo)
# I want this to return 3 4

基本上,我想将 id[[1]] 从执行环境传递给 myDTi 参数。

我很难在这里访问正确的环境,我正在寻求帮助。

不能更改函数参数的名称。

计划在 1.9.8 #633 中严格控制范围界定,完成后将使访问(外部)变量变得更加容易,这些变量也是 data.table 中的列名。

但这很容易解决。不知道你为什么过得很艰难..

fun <- function(id) {
    .id_unique = unique(id)
    myDT[.(.id_unique), which=TRUE]
}

fun(foo) # [1] 3 4