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

时间:2015-02-05 22:34:31

标签: r data.table evaluation

假设我们有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]]从执行环境传递到i的{​​{1}}参数。

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

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

1 个答案:

答案 0 :(得分:2)

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

但这很容易解决。不知道为什么你真的很难......

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

fun(foo) # [1] 3 4