我想检查是否有 data.table
我的函数正在运行的是 key
编。如何做到这一点?例如:
x = data.table(a=1:100, b=100:1)
setkey(x, a)
f = function(v) {v+1}
x[,f(b),by=a]
我想进去看看
f
如果在 x
上设置了 key 那是什么key
是这将需要访问
f
的对象。在这种情况下是从 x
调用的.这在 data.table
中是否可行? ?
最佳答案
f = function(v) {
cat("haskey(caller's x) is",eval(quote(haskey(x)), sys.frame(2)),"\n")
# x in line above = name of first argument to `[.data.table`
v+1
}
DT = data.table(a=1:3,foo=1:6)
DT[,f(foo),by=a]
haskey(caller's x) is FALSE
haskey(caller's x) is FALSE
haskey(caller's x) is FALSE
a V1
1: 1 2
2: 1 5
3: 2 3
4: 2 6
5: 3 4
6: 3 7
setkey(DT,a)
DT[,f(foo),by=a]
haskey(caller's x) is TRUE
haskey(caller's x) is TRUE
haskey(caller's x) is TRUE
a V1
1: 1 2
2: 1 5
3: 2 3
4: 2 6
5: 3 4
6: 3 7
>
但是你为什么需要那个?
关于r - 检查 data.table 是否键入函数,R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14381855/