Data.table: ํ• ๋‹น ์—ฐ์‚ฐ์ž : = ๋ž˜ํผ ํ•จ์ˆ˜์˜ ๋ณธ๋ฌธ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 09์›” 18์ผ  ยท  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))
}

๋ณด์‹œ๋‹ค์‹œํ”ผ "b"์—ด์— ์ƒˆ ๊ฐ’์„ ํ• ๋‹น (: =) ํ•œ ํ›„ (ํ”Œ๋ž˜๊ทธ๊ฐ€ TRUE ์ผ ๋•Œ) "f"ํ•จ์ˆ˜์˜ ๋ณธ๋ฌธ์ด "dt3 = ..."์ค„์—์„œ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค ( "b = 0 "๋Š”"b = 999 "๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค). FALSE ํ”Œ๋ž˜๊ทธ ๊ฐ’์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ํ•จ์ˆ˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

sessionInfo ()์˜ ์ถœ๋ ฅ :

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
High bug

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@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)

๊ฐ์‚ฌ. ๋‚˜๋Š” ์–ด์ œ ๊ฒฐํ•จ์ด์žˆ๋Š” ๋ผ์ธ์„ ๋ฐœ๊ฒฌํ–ˆ๊ณ  ๊ทธ๊ฒƒ์ด ๋‹จ์ง€ ๋ž˜ํผ๊ฐ€ ์•„๋‹์ง€ ๊ถ๊ธˆํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฏธ ์˜ˆ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ์ด ์ •๋ง ์ข‹์Šต๋‹ˆ๋‹ค. WIP ...

๊ด€๋ จ # 3766. ์šฐ๋ฆฌ๋ฅผ ํฌ๊ธฐํ•˜์ง€ ์•Š์€ @kirillmayantsev ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰