It's something of a nuisance to assign ragged columns with tstrsplit, if we don't necessarily know how many columns will result ex ante. Is it possible to add an assign argument which would use := or set to add the result as extra columns to the table?
DT <- data.table(x = c("a/b/c/d", "a/b/c", "a/b"),
y = 1:3, z = 4:6)
DT[ , tstrsplit(x, "/")]
# V1 V2 V3 V4 #`x`, `y`, and `z` are irrecoverable
#1: a b c NA
#2: a b NA NA
#3: a b c d
Workaround (ugly)
DT[ , paste0("V", 1:max(sapply(spl <- strsplit(x, "/"), length))) := transpose(spl)][]
# x y z V1 V2 V3 V4
#1: a/b/c 1 5 a b c NA
#2: a/b 2 6 a b NA NA
#3: a/b/c/d 3 7 a b c d
Inspired by this SO question
It's something of a nuisance to assign ragged columns with
tstrsplit, if we don't necessarily know how many columns will result ex ante. Is it possible to add anassignargument which would use:=orsetto add the result as extra columns to the table?Workaround (ugly)
Inspired by this SO question