在构建表达式以放入j
调用的时隙时,能够检查并播放.SD
的内容通常会很有帮助。可以通过[.data.table()中的浏览器查看.SD吗?
这天真的尝试不起作用......
library(data.table)
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
DT[, browser(), by=x]
# Called from: `[.data.table`(DT, , browser(), by = x)
Browse[1]>
Browse[1]> .SD
# NULL data.table
...即使一个名为.SD
,并与当前data.table子几个人变量都存在于当地的环境
Browse[1]> ls(all.names = TRUE)
# [1] ".BY" ".GRP" ".I" ".iSD" ".N" ".SD"
# [7] "Cfastmean" "mean" "print" "x"
Browse[1]> .N
# [1] 3
Browse[1]> .I
# [1] 4 5 6
使用.I
,我可以看到的东西像+/- .SD
,但它会很高兴能够直接访问其值:
Browse[1]> DT[.I]
# x y v
# 1: b 1 4
# 2: b 3 5
# 3: b 6 6
个
我的问题:为什么的.SD
不能直接从一个browser()
调用中的预期值(而.I
,.N
,.GRP
和.BY
是什么)?有没有其他方法可以访问.SD
的值?
我赢了der,在调用'browser()'的时候,'.SD'实际上填充了任何东西? 'str(.SD)'显示'类'data.table'和'data.frame':\t 0 obs。 0变量'等 – 2013-03-27 19:58:33
@Gavin辛普森 - 我想你可能会在那里的东西。我刚刚添加的部分答案似乎是朝着这个方向的更多证据。我也想知道是否延迟对'.SD'进行评估。 – 2013-03-27 20:04:12