Hmmm I would have liked to see

set(dt, j=new_col_name, value=NA)

work but that doesn't. Any reason why necessarily?

On Wed, Jul 25, 2012 at 2:03 PM, Kaupas, George
<[email protected]> wrote:
> I'm trying to add empty columns to data.tables using a variable containing 
> the name of the desired column, but I'm unable to figure out how to 
> dereference the variable value to satisfy the := operator.
>
> Here's a simple example:
>
> require(data.table);
> dt <- data.table(read.table(text="N1 N2\nA B\nC D\n", header=TRUE));
> new_col_name = "N3";
> dt[, new_col_name := NA];
>
> That creates a column literally named "new_col_name", rather than "N3" as 
> desired.
>
> I can work around it this way:
>
> dt[, workaround := NA];
> setnames(dt, "workaround", new_col_name);
>
> I have tried wrapping the new_col_name variable in all sorts of functions 
> such as eval(), c(), list(), quote(), etc; all of these generate an error 
> such as:
>
> Error in `[.data.table`(dt, , `:=`(quote(new_col_name), NA)) :
>   LHS of := must be a single column name when with=TRUE. When with=FALSE the 
> LHS may be a vector of column names or positions.
>
> Surely I am overlooking something trivial; please advise.
>
> Thanks
> George
> http://stackoverflow.com/users/1313052/gkaupas
>
> _______________________________________________
> datatable-help mailing list
> [email protected]
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
_______________________________________________
datatable-help mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help

Reply via email to