将函数参数传递给 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]]
从执行环境传递给 myDT
的 i
参数。
我很难在这里访问正确的环境,我正在寻求帮助。
不能更改函数参数的名称。
计划在 1.9.8 #633 中严格控制范围界定,完成后将使访问(外部)变量变得更加容易,这些变量也是 data.table 中的列名。
但这很容易解决。不知道你为什么过得很艰难..
fun <- function(id) {
.id_unique = unique(id)
myDT[.(.id_unique), which=TRUE]
}
fun(foo) # [1] 3 4
假设我们有一个 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]]
从执行环境传递给 myDT
的 i
参数。
我很难在这里访问正确的环境,我正在寻求帮助。
不能更改函数参数的名称。
计划在 1.9.8 #633 中严格控制范围界定,完成后将使访问(外部)变量变得更加容易,这些变量也是 data.table 中的列名。
但这很容易解决。不知道你为什么过得很艰难..
fun <- function(id) {
.id_unique = unique(id)
myDT[.(.id_unique), which=TRUE]
}
fun(foo) # [1] 3 4