r - 检查 data.table 是否键入函数,R

标签 r data.table

我想检查是否有 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/

相关文章:

使用响应式(Reactive)绘图时出现 R Shiny 错误

r - 根据同一列中的多个条件过滤 data.table

r - fread - 跳过以特定字符开头的行 - "#"

r - 我想使用 R 中的 ggmap 删除我的情节中的美学图例

r - R编程的技巧: Where else could I find the information?

R data.table二进制值,按条件分组的最后一行

r - na.trim 在特定列上使用 data.table

r - 按升序/降序快速对 data.table 进行排序

r - 聚类 2 元素整数向量

r - 以数据帧 + r + lme 的形式访问 Intervals.lme 的结果