I'm taking advantage of a feature in data.table which lets me get away with naming columns with characters that would not survive a call to make.names(), e.g.:
> DT1 = data.table(a=letters[1:5], "Illegal(name%)"=1:5, key="a") > DT1 a Illegal(name%) 1: a 1 2: b 2 3: c 3 4: d 4 5: e 5 (The the dcast function from the reshape2 package will also create columns named "illegally".) But when using merge.data.table, I get two side-effects; either the merge works, but the column names appear to be run through make.names(), or the merge fails in setcolorder(): > DT1 = data.table(a=letters[1:5], "Illegal(name%)"=1:5, key="a") > DT2 = data.table(a=letters[1:5], b=6L, key="a") > merge(DT1,DT2) a Illegal.name.. b 1: a 1 6 2: b 2 6 3: c 3 6 4: d 4 6 5: e 5 6 > merge(DT2,DT1) Error in setcolorder(dt, c(setdiff(names(dt), end), end)) : neworder is length 4 but x has 3 columns. I can't get to datatable.r-forge.r-project.org - getting a 504. So... should I NOT rely on being able to use special characters in column names? Thanks George > sessionInfo() R version 2.15.0 (2012-03-30) Platform: x86_64-unknown-linux-gnu (64-bit) [1] data.table_1.8.2
_______________________________________________ datatable-help mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
