This is equivalent to transpose(strsplit(...)). This is a convenient wrapper function to split a column using strsplit and assign the transposed result to individual columns. See examples.

tstrsplit(x, ..., fill=NA, type.convert=FALSE, keep, names=FALSE)

Arguments

x

The vector to split (and transpose).

...

All the arguments to be passed to strsplit.

fill

Default is NA. It is used to fill shorter list elements so as to return each element of the transposed result of equal lengths.

type.convert

TRUE calls type.convert with as.is=TRUE on the columns.

keep

Specify indices corresponding to just those list elements to retain in the transposed result. Default is to return all.

names

TRUE auto names the list with V1, V2 etc. Default (FALSE) is to return an unnamed list.

Details

It internally calls strsplit first, and then transpose on the result.

names argument can be used to return an auto named list, although this argument does not have any effect when used with :=, which requires names to be provided explicitly. It might be useful in other scenarios.

Value

A transposed list after splitting by the pattern provided.

See also

Examples

x = c("abcde", "ghij", "klmnopq") strsplit(x, "", fixed=TRUE)
#> [[1]] #> [1] "a" "b" "c" "d" "e" #> #> [[2]] #> [1] "g" "h" "i" "j" #> #> [[3]] #> [1] "k" "l" "m" "n" "o" "p" "q" #>
tstrsplit(x, "", fixed=TRUE)
#> [[1]] #> [1] "a" "g" "k" #> #> [[2]] #> [1] "b" "h" "l" #> #> [[3]] #> [1] "c" "i" "m" #> #> [[4]] #> [1] "d" "j" "n" #> #> [[5]] #> [1] "e" NA "o" #> #> [[6]] #> [1] NA NA "p" #> #> [[7]] #> [1] NA NA "q" #>
tstrsplit(x, "", fixed=TRUE, fill="<NA>")
#> [[1]] #> [1] "a" "g" "k" #> #> [[2]] #> [1] "b" "h" "l" #> #> [[3]] #> [1] "c" "i" "m" #> #> [[4]] #> [1] "d" "j" "n" #> #> [[5]] #> [1] "e" "<NA>" "o" #> #> [[6]] #> [1] "<NA>" "<NA>" "p" #> #> [[7]] #> [1] "<NA>" "<NA>" "q" #>
# using keep to return just 1,3,5 tstrsplit(x, "", fixed=TRUE, keep=c(1,3,5))
#> [[1]] #> [1] "a" "g" "k" #> #> [[2]] #> [1] "c" "i" "m" #> #> [[3]] #> [1] "e" NA "o" #>
# names argument tstrsplit(x, "", fixed=TRUE, keep=c(1,3,5), names=LETTERS[1:3])
#> $A #> [1] "a" "g" "k" #> #> $B #> [1] "c" "i" "m" #> #> $C #> [1] "e" NA "o" #>
DT = data.table(x=c("A/B", "A", "B"), y=1:3) DT[, c("c1") := tstrsplit(x, "/", fixed=TRUE, keep=1L)][]
#> x y c1 #> 1: A/B 1 A #> 2: A 2 A #> 3: B 3 B
DT[, c("c1", "c2") := tstrsplit(x, "/", fixed=TRUE)][]
#> x y c1 c2 #> 1: A/B 1 A B #> 2: A 2 A <NA> #> 3: B 3 B <NA>