4

我不熟悉这个df[, .(...), Col]符号。如果我遗漏了一些明显的东西,我深表歉意,但我找不到这种符号风格的参考,尽管它看起来非常有用。

它似乎正在实施聚合。根据下面代码中此符号的位置,我希望它来自 R 而不是来自,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")

我会喜欢文档和/或对此的一个很好的解释。

4

1 回答 1

7

.()是一个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();的别名 它们的含义相同。随意使用您喜欢的任何一个

于 2015-11-19T16:27:11.460 回答