我在data.table包中遇到了一些有点不直观的键行为.这是一个例子:
library(data.table)
foo <- data.table(a = c(1:4), b = c(2:5), c = c(3:6), d = c(4:7))
setkey(foo, b)
Run Code Online (Sandbox Code Playgroud)
然后,有一个惊人的结果key():
key(foo[, .(mean(c + d)), by = .(b)]) # result is "b".
key(foo[, .(mean(c + d)), by = .(a)]) # result is "a". (!!)
Run Code Online (Sandbox Code Playgroud)
然后,还有另一个例子可以产生不同的,更合理的结果.
foo <- data.table(a = c(4:1), b = c(2:5), c = c(3:6), d = c(4:7))
setkey(foo, b)
key(foo[, .(mean(c + d)), by = .(b)]) # result is "b".
key(foo[, .(mean(c + d)), by = …Run Code Online (Sandbox Code Playgroud)