Skip to content

melt when id.vars = NULL #2502

Open
Open
@Henrik-P

Description

@Henrik-P

melt a data.table where all variables are measure.vars without specifying id.vars or measure.vars, works fine, but triggers a (relevant and informative) warning*:

library(reshape2)
library(data.table)
dt <- data.table(x1 = 1, x2 = 2, x3 = 3)
melt(dt)
#    variable value
# 1:       x1     1
# 2:       x2     2
# 3:       x3     3
# Warning message:
#   In melt.data.table(dt) :
#   To be consistent with reshape2's melt, id.vars and measure.vars are internally guessed when both
# are 'NULL'. All non-numeric/integer/logical type columns are conisdered id.vars, which in this case
# are columns []. Consider providing at least one of 'id' or 'measure' vars in future.

"id.vars and measure.vars are [...] both [...] NULL". So let's try to set id.vars = NULL because the data contains measure.vars only:

melt(dt, id.vars = NULL)

Same warning.

Try similar in reshape2::melt; id/measure.vars not specified, generates a warning:

dt <- as.data.frame(dt)
melt(df)
# No id variables; using all as measure variables
#   variable value
# 1       x1     1
# 2       x2     2
# 3       x3     3

Setting id.vars = NULL removes the warning:

melt(df, id.vars = NULL)
#   variable value
# 1       x1     1
# 2       x2     2
# 3       x3     3

Should id.vars = NULL in data.table::melt work like in reshape2::melt, i.e. result in no "guessing" of id/measure.vars and no warning, "To be consistent with reshape2's melt"?


*Please note the typo in the warning: "conisdered" should be "considered"

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions