Data.table: DT[TRUE]๋Š” ์ž˜๋ชป๋œ ํ‚ค๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2018๋…„ 12์›” 13์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Rdatatable/data.table

DT[TRUE] ๊ฐ€ ์–•์€ ๋ณต์‚ฌ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ๊ฒƒ์„ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ์–•์€ ์‚ฌ๋ณธ์€ ๋‚ด๋ถ€์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. #3214 ๋ฐ ๊ด€๋ จ #2254์—์„œ ์ด๋ฅผ ๊ฐ•์กฐํ•ด ์ฃผ์‹  @renkun-ken์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • [x] #3214
  • [ ] #2254

v1.11.8์—์„œ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค:

DT = data.table(id = 1:5, key="id")
DT1 = DT[TRUE]
key(DT1)
[1] "id"
DT1[3, id:=6L]
key(DT1)
# NULL              # correct
DT$id
# [1] 1 2 6 4 5     # should be 1:5
key(DT)
# [1] "id"          # invalid key

๊ทธ๊ฒƒ์€ DT[TRUE] , iiuc ์ดํ›„์—๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋ฐœ๊ฒฌํ•˜๊ฑฐ๋‚˜ ์˜์กดํ•˜์ง€ ์•Š์•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค! ๊ธฐ์กด ์—ด์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์–•์€ ๋ณต์‚ฌ๋ณธ์— ์ƒˆ ์—ด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์„ค๋ช…๋œ @renkun-ken๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ๋ฒ•์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

์ƒˆ ํ…Œ์ŠคํŠธ 1542.08์ด PR #2313์— ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์ด ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋  ๋•Œ ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์˜ˆ, setkey, ๊ธฐ์กด ์—ด ๋ณ€๊ฒฝ์€ ์—ด ์ž์ฒด๊ฐ€ ๋ณต์‚ฌ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์–•์€ ๋ณต์‚ฌ์—์„œ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

์˜ˆ, setkey, ๊ธฐ์กด ์—ด ๋ณ€๊ฒฝ์€ ์—ด ์ž์ฒด๊ฐ€ ๋ณต์‚ฌ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์–•์€ ๋ณต์‚ฌ์—์„œ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

dt[TRUE] ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ด ๋ฌธ์ œ๋Š” ์ž๋™์œผ๋กœ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ. ํ•˜์ง€๋งŒ ๊ทธ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” @renkun-ken์˜ ์›Œํฌํ”Œ๋กœ๋ฅผ ์ค‘๋‹จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐ ํ•˜์„ธ์š”.

๋ณต์‚ฌ ๋™์ž‘์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DT = data.table(a=c(1,2), b=c("b","a"))
address(DT)
address(DT[])
address(DT[, .SD])
address(DT[TRUE])
sapply(DT, address)
sapply(DT[], address)
sapply(DT[, .SD], address)
sapply(DT[TRUE], address)
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰