patterns.Rdpatterns returns the elements of cols
that match the regular expression patterns, which must be
supported by grep.
From v1.9.6, melt.data.table has an enhanced functionality
in which measure.vars argument can accept a list of column names
and melt them into separate columns. See the Efficient reshaping using
data.tables vignette linked below to learn more.
patterns(
..., cols=character(0),
ignore.case=FALSE, perl=FALSE,
fixed=FALSE, useBytes=FALSE)A set of regular expression patterns.
A character vector of names to which each pattern is matched.
Passed to grep.
DT = data.table(x1 = 1:5, x2 = 6:10, y1 = letters[1:5], y2 = letters[6:10])
# melt all columns that begin with 'x' & 'y', respectively, into separate columns
melt(DT, measure.vars = patterns("^x", "^y", cols=names(DT)))
#> variable value1 value2
#> <fctr> <int> <char>
#> 1: 1 1 a
#> 2: 1 2 b
#> 3: 1 3 c
#> 4: 1 4 d
#> 5: 1 5 e
#> 6: 2 6 f
#> 7: 2 7 g
#> 8: 2 8 h
#> 9: 2 9 i
#> 10: 2 10 j
# when used with melt, 'cols' is implicitly assumed to be names of input
# data.table, if not provided.
melt(DT, measure.vars = patterns("^x", "^y"))
#> variable value1 value2
#> <fctr> <int> <char>
#> 1: 1 1 a
#> 2: 1 2 b
#> 3: 1 3 c
#> 4: 1 4 d
#> 5: 1 5 e
#> 6: 2 6 f
#> 7: 2 7 g
#> 8: 2 8 h
#> 9: 2 9 i
#> 10: 2 10 j