I’d like to print all the columns of a data table dt except one of them named V3 but don’t want to refer to it by number but by name. This is the code that I have:
dt = data.table(matrix(sample(c(0,1),5,rep=T),50,10))
dt[,-3,with=FALSE] # Is this the only way to not print column "V3"?
Using the data frame way, one could do this through the code:
df = data.frame(matrix(sample(c(0,1),5,rep=T),50,10))
df[,!(colnames(df)%in% c("X3"))]
So, my question is: is there another way to not print one column in a data table without the necessity of refer to it by number? I’d like to find something similar to the data frame syntax I used above but using data table.
Use a very similar syntax as for a
data.frame, but add the argumentwith=FALSE:The use of
with=FALSEis nicely explained in the documentation for thejargument in?data.table:j: A single column name, single expresson of column names,
list()of expressions of column names, an expression or function call that evaluates to list (includingdata.frameanddata.tablewhich are lists, too), or (whenwith=FALSE) same as j in[.data.frame.From v1.10.2 onwards it is also possible to do this as follows:
Prefixing a symbol with
..will look up in calling scope (i.e. the Global Environment) and its value taken to be column names or numbers (source).