Data.table: рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ := рд░реИрдкрд░ рдлрдВрдХреНрд╢рди рдХреА рдмреЙрдбреА рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рд╕рд┐рддре░ 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Rdatatable/data.table

рд╣реИрд▓реЛ!

рдиреНрдпреВрдирддрдо рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг :

library(data.table)

f = function(flag = FALSE) {
  dt1 = data.table(a = 1)
  dt2 = data.table(a = 1)
  dt3 = dt1[, .(a, b = 0)]

  print(body(f))
  if (flag) dt3[dt2, b := 999, on = "a"]
  print(body(f))

  return(invisible(dt3))
}

f(flag = FALSE)
f(flag = TRUE)

> f(flag = FALSE)
{
    dt1 = data.table(a = 1)
    dt2 = data.table(a = 1)
    dt3 = dt1[, .(a, b = 0)]
    print(body(f))
    if (flag) 
        dt3[dt2, `:=`(b, 999), on = "a"]
    print(body(f))
    return(invisible(dt3))
}
{
    dt1 = data.table(a = 1)
    dt2 = data.table(a = 1)
    dt3 = dt1[, .(a, b = 0)]
    print(body(f))
    if (flag) 
        dt3[dt2, `:=`(b, 999), on = "a"]
    print(body(f))
    return(invisible(dt3))
}

> f(flag = TRUE)
{
    dt1 = data.table(a = 1)
    dt2 = data.table(a = 1)
    dt3 = dt1[, .(a, b = 0)]
    print(body(f))
    if (flag) 
        dt3[dt2, `:=`(b, 999), on = "a"]
    print(body(f))
    return(invisible(dt3))
}
{
    dt1 = data.table(a = 1)
    dt2 = data.table(a = 1)
    dt3 = dt1[, .(a, b = 999)]
    print(body(f))
    if (flag) 
        dt3[dt2, `:=`(b, 999), on = "a"]
    print(body(f))
    return(invisible(dt3))
}

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрд▓рдо "рдмреА" (рдЬрдм рдзреНрд╡рдЬ рд╕рддреНрдп рд╣реИ) рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдорд╛рди (: =) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, "рдПрдл" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢рд░реАрд░ "рдбреАрдЯреА 3 = ..." ("рдмреА = 0) рдкрд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред " рдХреЛ "рдмреА = 999" рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред FALSE рдзреНрд╡рдЬ рдорд╛рди рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдлрд╝рдВрдХреНрд╢рди рд░рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рднрд┐рдиреНрди рд╣реЛрдЧрд╛ред

рд╕реЗрд╢рдирдЗрдиреНрдлреЛ () рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ :

R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7600)

Matrix products: default

locale:
[1] LC_COLLATE=Russian_Russia.1251  LC_CTYPE=Russian_Russia.1251    LC_MONETARY=Russian_Russia.1251
[4] LC_NUMERIC=C                    LC_TIME=Russian_Russia.1251    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.12.3

loaded via a namespace (and not attached):
[1] compiler_3.5.1 tools_3.5.1    yaml_2.2.0

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

@mattdowle , рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд░реИрдкрд░-рдлрдВрдХреНрд╢рди рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

library(data.table)
value = 0
dt1 = data.table(a = 1)
dt2 = dt1[, .(a, b = ..value)]
dt2[1, b := 999]
print(value)

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

рдмрдврд╝рд┐рдпрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ v1.12.2 рдореЗрдВ рднреА рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@mattdowle , рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд░реИрдкрд░-рдлрдВрдХреНрд╢рди рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

library(data.table)
value = 0
dt1 = data.table(a = 1)
dt2 = dt1[, .(a, b = ..value)]
dt2[1, b := 999]
print(value)

рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдХрд▓ рдЧрд▓рддреА рдХреА рд░реЗрдЦрд╛ рдХреЛ рдкрд╛рдпрд╛ рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд░реИрдкрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЙрджрд╛рд╣рд░рдг рд░рдЦрдирд╛ рд╡рд╛рдХрдИ рдЕрдЪреНрдЫрд╛ рд╣реИред рд╡рд┐рдк ...

рд╕рдВрдмрдВрдзрд┐рдд #3766ред рдзрдиреНрдпрд╡рд╛рдж @kirillmayantsev рд╣рдореЗрдВ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

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

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