提问人:Hack-R 提问时间:11/20/2015 最后编辑:HenrikHack-R 更新时间:8/5/2021 访问量:2703
括号前的点,.( ),在 data.table 中
Dot preceding parentheses, .( ), in data.table
问:
我不熟悉这个符号。如果我遗漏了一些明显的东西,我深表歉意,但我找不到对这种符号样式的引用,尽管它看起来非常有用。df[, .(...), Col]
它似乎正在实现聚合。根据此符号在以下代码中的位置,我希望它来自不是来自,但我尝试检查两者都无济于事。h2o
该示例来自 Kaggle 竞赛,代码有效(要重现它,请转到此处):
trainHex<-as.h2o(train[,.(
dist = mean(radardist_km, na.rm = T),
refArea5 = mean(Ref_5x5_50th, na.rm = T),
refArea9 = mean(Ref_5x5_90th, na.rm = T),
meanRefcomp = mean(RefComposite,na.rm=T),
meanRefcomp5 = mean(RefComposite_5x5_50th,na.rm=T),
meanRefcomp9 = mean(RefComposite_5x5_90th,na.rm=T),
zdr = mean(Zdr, na.rm = T),
zdr5 = mean(Zdr_5x5_50th, na.rm = T),
zdr9 = mean(Zdr_5x5_90th, na.rm = T),
target = log1p(mean(Expected)),
meanRef = mean(Ref,na.rm=T),
sumRef = sum(Ref,na.rm=T),
records = .N,
naCounts = sum(is.na(Ref))
),Id][records>naCounts,],destination_frame="train.hex")
我希望文档和/或对此有很好的解释。
答:
7赞
Josh O'Brien
11/20/2015
#1
.()
是一个 data.table 便利函数,充当 的简洁别名。稍微复杂一点(主要是对于那些像你一样试图弄清楚这到底是做什么的人!)事实是,它只在调用 的范围内被解释为这样。list()
.
[.data.table()
在这里,来自:?data.table
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
setkey(DT,x,y) # 2-column key
DT["a"] # join to 1st column of key
DT[.("a")] # same, .() is an alias for list()
DT[list("a")] # same
## But note that *this* doesn't work (my addition --- not in ?data.table)
.("a")
另请参阅小插图 data.table 简介:
data.table
还允许用 而不是 来包装列。它是 的别名 ;它们都是一样的意思。随意使用您喜欢的任何一种.()
list()
list()
评论
0赞
Hack-R
11/20/2015
我知道我固执地拒绝变得更熟悉会困扰我!非常感谢data.table
0赞
MichaelChirico
11/20/2015
@Hack-R Arun 的小插图是让你的脚湿的好地方
1赞
Hack-R
11/20/2015
@MichaelChirico 谢谢,是的,我检查了我认为可能相关的小插曲,我只是没有意识到哪个小插曲与此有关。这不是你可以用一个简单的函数名称来发现的东西,因为你可以查看它与哪个包相关联。?
评论
data.table
.(...)
list(...)
data.table
fread