рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдпрд╛ рдПрд╕рдУ рдкреЛрд╕реНрдЯ рдХреЛ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдХрд┐рд╕реА рдХреЛ рдпрд╛рдж рд╣реИ рдпрд╛ рд▓рд┐рдВрдХ рд╣реИ рдХреГрдкрдпрд╛? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ " .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
рд▓рд┐рдП рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред
рдХрд┐рд╕реА рдХреЛ рдпрд╛рдж рд╣реИ рдпрд╛ рд▓рд┐рдВрдХ рд╣реИ рдХреГрдкрдпрд╛?
рд╕рдВрднрд╡рддрдГ рдЖрдк рдЬреЛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ: 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
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╕реВрддреНрд░ рд╣реИ! рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ?