2015-11-19 10 views
2

Я не знаком с этим df[, .(...), Col] обозначение. Я прошу прощения, если у меня что-то не хватает, но я не могу найти ссылку на этот стиль нотации, хотя он выглядит очень полезным.Dot перед круглыми скобками в data.table

Представляется, что она реализует агрегацию. Основываясь на расположении этих обозначений в приведенном ниже коде, я ожидал бы, что он исходит от R не от h2o, но я пробовал проверять оба безрезультатно.

Пример от конкуренции Kaggle и кодовыми работ (воспроизвести его go here):

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

Это 'data.table' синтаксис (см строка 24 кода вы связаны и увидеть data.table :: data.table больше?). Начиная с 1.9.5, '. (...)' является псевдонимом для 'list (...)'. – MichaelChirico

+0

В строке 30 создается 'data.table'. Функция 'fread' по умолчанию соответствует этой структуре. –

ответ

4

.() является данные. Таблица функция удобства, действующая как краткий псевдоним для 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") 
+0

Я знал, что мой упрямый отказ стать более знакомым с 'data.table' будет преследовать меня! Большое спасибо –

+0

@ [виньетки Hack-R Arun] (https://github.com/Rdatatable/data.table/wiki/Getting-started) - отличное место, где можно намочить ноги. – MichaelChirico

+0

@MichaelChirico Спасибо, да, я проверил виньетки, которые, как я думал, могут быть связаны, я просто не понимал, какая виньетка связана с этим. Это не то, что вы можете узнать с помощью простого '?', Поскольку вы можете указать имя функции, с которой связан пакет. –