λλ μμ£Ό νλ€
DT[CJ(colA = colA, colB = colB, unique=TRUE), on=c("colA","colB")]
# to complete missing levels
# or
DT[, CJ(colA = colA, colB = colB, unique=TRUE)][!DT, on=c("colA","colB")]
# to identify missing levels
# http://stackoverflow.com/a/36065607/1191259
colA
μ colB
λ₯Ό μ°λ νμλ₯Ό μ€μΌ μ μλ€λ©΄ μ’μ κ²μ
λλ€. μ¬κΈ°μμ FRμ
CJ(colA, colB, unique=TRUE, names=TRUE)
colA
λ° colB
μ΄λ¦μ μ μΆνλ €λ©΄ data.frame() λ° data.table() ( make.names
?) μμ μ¬μ©νλ λ©μλλ₯Ό μ¬μ©ν©λλ€.
( on=.Icols
λΌλ©΄ μ΄λ¦ λ°λ³΅μ λ μ€μΌ μ μμ κ² κ°μ§λ§, 그건 λ³λμ FRλ‘ λ¨κ²¨λκ² μ΅λλ€.)
μ λ°μ΄νΈν κ²μλ¬Ό SO...
CJ
λ 첫 λ²μ§Έ μΈμλ‘ ...
λ₯Ό μ¬μ©νκ³ ν΄λΉ ν¨μλ μΌλ° λ©μλκ° λ κ²μ΄λ―λ‘ AFAIKλ μ΄λ₯Ό CJ(x, ...)
λ‘ λ³κ²½ν΄μΌ ν©λλ€. μ΄λ¬ν λ³κ²½μ ν¨κ» μνν μ μμ΅λλ€. # 1090
+1μ΄κ³ names
μΈμκ° νμνμ§ μμ΅λλ€. μ΄κ²μ΄ μ μΌν λμμ΄μ΄μΌ ν©λλ€. setkey
λμ "on"μ μ¬μ©νλλ‘ μ‘°μΈ κ΅¬λ¬Έμ λ³κ²½νλ©΄ μ΄κ²μ΄ μ μκ² ν° λ¬Έμ κ° λμμ΅λλ€.
λλ λν unique = TRUE
κ° κΈ°λ³Έκ°μ΄ λλ κ²μ λ³΄κ³ μΆμ΅λλ€ - CJ
λν μΈμλ₯Ό κ³ μ ν νμκ° _ever_ νμνμ§ μλ€κ³ μκ°ν μ μμ΅λλ€.
@jangorecki μμ§ #1090 / #814 물건μ λ§μ§μ§ μμμ΅λλ€. λ΄κ° λκ°λ₯Ό λμΉκ³ μμ§ μλ ν μκΈμμ‘±νλ κ²μ΄ λ λ«λ€κ³ μκ°ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
+1μ΄κ³
names
μΈμκ° νμνμ§ μμ΅λλ€. μ΄κ²μ΄ μ μΌν λμμ΄μ΄μΌ ν©λλ€.setkey
λμ "on"μ μ¬μ©νλλ‘ μ‘°μΈ κ΅¬λ¬Έμ λ³κ²½νλ©΄ μ΄κ²μ΄ μ μκ² ν° λ¬Έμ κ° λμμ΅λλ€.λλ λν
unique = TRUE
κ° κΈ°λ³Έκ°μ΄ λλ κ²μ λ³΄κ³ μΆμ΅λλ€ -CJ
λν μΈμλ₯Ό κ³ μ ν νμκ° _ever_ νμνμ§ μλ€κ³ μκ°ν μ μμ΅λλ€.