data.table for use in
i in a
# DT[J(...)] # J() only for use inside DT[...] # DT[.(...)] # .() only for use inside DT[...] # DT[list(...)] # same; .(), list() and J() are identical SJ(...) # DT[SJ(...)] CJ(..., sorted=TRUE, unique=FALSE) # DT[CJ(...)]
Each argument is a vector. Generally each vector is the same length, but if they are not then the usual silent recycling is applied.
CJ are convenience functions to create a
data.table to be used in
i when performing a
data.table 'query' on
x[data.table(id)] is the same as
x[J(id)] but the latter is more readable. Identical alternatives are
When using a join table in
x must either be keyed or the
on argument be used to indicate the columns in
i which should be joined. See
J : the same result as calling
list, for which
J is a direct alias.
SJ : Sorted Join. The same value as
J() but additionally
setkey() is called on all columns in the order they were passed to
SJ. For efficiency, to invoke a binary merge rather than a repeated binary full search for each row of
CJ : Cross Join. A
data.table is formed from the cross product of the vectors. For example,
CJ on 10 ids and 100 dates, returns a 1000 row table containing all dates for all ids. If
sorted = TRUE (default),
setkey() is called on all columns in the order they were passed in to
sorted = FALSE, the result is unkeyed and input order is retained.
DT = data.table(A=5:1, B=letters[5:1]) setkey(DT, B) # reorders table and marks it sorted DT[J("b")] # returns the 2nd row DT[list("b")] # same DT[.("b")] # same using the dot alias for list # CJ usage examples CJ(c(5, NA, 1), c(1, 3, 2)) # sorted and keyed data.table do.call(CJ, list(c(5, NA, 1), c(1, 3, 2))) # same as above CJ(c(5, NA, 1), c(1, 3, 2), sorted=FALSE) # same order as input, unkeyed # use for 'unique=' argument x = c(1, 1, 2) y = c(4, 6, 4) CJ(x, y) # output columns are automatically named 'x' and 'y' CJ(x, y, unique=TRUE) # unique(x) and unique(y) are computed automatically z = 0:1 + (0:1)*1i CJ(x, z, sorted = FALSE) # support for sorting complex is not yet implemented
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.