Data.table: рдЬрдм рдореИрдВ рд╕рдореВрд╣реАрдХрд░рдг рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рддреЛ рдореИрдВ рдкреНрд░рддреАрдХ рд╣реВрдБ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдЬрдире░ 2018  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Rdatatable/data.table

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдпрд╛ рдПрд╕рдУ рдкреЛрд╕реНрдЯ рдХреЛ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдХрд┐рд╕реА рдХреЛ рдпрд╛рдж рд╣реИ рдпрд╛ рд▓рд┐рдВрдХ рд╣реИ рдХреГрдкрдпрд╛? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ " .I " рдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдореВрд╣реАрдХрд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЧреИрд░-рд╕рдореВрд╣ рдореЗрдВ рднреА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореИрди рдкреЗрдЬ рдореЗрдВ рдЕрднреА рднреА .I рд▓рд┐рдП "рдЧреНрд░реБрдк рдХрд░рддреЗ рд╣реБрдП" рд╢рдмреНрдж рд╣реИрдВред

V1.10.4-3 рдФрд░ рджреЗрд╡ рджреЛрдиреЛрдВ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░:

> X = data.table(c("a","a","b","c","c"), 10:14)
> setkey(X,V1)
>  X["b"]
   V1 V2
1:  b 12       # ok
> X["b", .I]
[1] 1          # expected x's row number 3  (*1)
> X["b", .I, by=.EACHI]
   V1 I
1:  b 3        # ok
> X["b", .(.I,V2)]
   I V2
1: 1 12      # expected x's row number 3 not 1  (*2)
> X["b", .(.I,V2), by=.EACHI]
   V1 I V2
1:  b 3 12     # ok
> 

рдЕрдм, which=TRUE рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ рдФрд░ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (* 1):

> X["b", which=TRUE]
[1] 3

рд▓реЗрдХрд┐рди j ( 2) рдХреЗ рдЕрдВрджрд░ x рдХреА рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдпрд╣ .I рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬреЛ which=TRUE рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд░рддрд╛ рд╣реИ ( 1) рдФрд░ рд╢рд╛рдпрдж рдзреАрд░реЗ-рдзреАрд░реЗ which=TRUE рддрд░реНрдХ рдореЗрд░реЗ рдЕрдиреБрдорд╛рди рдХреЗ рдмрд╛рдж рд╕реЗ рд▓реЛрдЧ .I рд▓рд┐рдП рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╕реВрддреНрд░ рд╣реИ! рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХрд┐рд╕реА рдХреЛ рдпрд╛рдж рд╣реИ рдпрд╛ рд▓рд┐рдВрдХ рд╣реИ рдХреГрдкрдпрд╛?

  • рд╕рдВрднрд╡рддрдГ рдЖрдк рдЬреЛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ: https://stackoverflow.com/a/34755995/ рдФрд░ https://github.com/Rdatatable/data.table/issues/1494 рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢реАрд░реНрд╖рдХ "рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред" рдбреАрдЯреА рдореЗрдВ рдореИрдВред i, i .I] рдбреАрдЯреА рдХреА рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП DT [i] "(рдХреЗ рдмрд┐рдирд╛) рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╣реИ рдЬрдм = = рдореМрдЬреВрдж рд╣реИ ...?

  • рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ .I рдФрд░ by = https://github.com/Rdatatable/data.table/issues/1206

рдХреНрдпрд╛ рд╣рдо рдмрд┐рдирд╛ рдЧреНрд░реБрдкрд┐рдВрдЧ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП .I рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@dracodoc рдХреЗ рд░реВрдк рдореЗрдВ рдлреНрд░реИрдВрдХ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ # 1206 рд╣реИ

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╕реВрддреНрд░ рд╣реИ! рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

рдЙрджрд╛рд╣рд░рдг https://github.com/Rdatatable/data.table/issues/539 рд╕реЗ

dt <- data.table(a=sample(letters, 100, T), b=rnorm(100))
dt[ a=="c", list(.N, .I)]
   N .I
1: 4  1
2: 4  2
3: 4  3
4: 4  4

dt[a=="c", list(.N, .I), by=a]
   a N .I
1: c 4 54
2: c 4 67
3: c 4 71
4: c 4 86
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lux5 picture lux5  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

st-pasha picture st-pasha  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

arunsrinivasan picture arunsrinivasan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattdowle picture mattdowle  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jangorecki picture jangorecki  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ