<div dir="ltr"><div>I think this is an example of the "drop gotcha", masked by data table.  See <a href="http://pj.freefaculty.org/blog/?p=274">http://pj.freefaculty.org/blog/?p=274</a><br><br></div>basically, R defaults to "demote" one column matrices to vectors, we avoid that by additional argument drop = FALSE.  However, layering data.table on top of that confuses the situation somewhat.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 12, 2015 at 3:27 PM, Ben Tupper <span dir="ltr"><<a href="mailto:btupper@bigelow.org" target="_blank">btupper@bigelow.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
I would like to extract a column of a data.table, but I get unexpected (to me) results when I specify a column dynamically.<br>
<br>
DT <- data.table(ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c = 13:18)<br>
thisone = "a"<br>
<br>
str(DT[,a])<br>
#  int [1:6] 1 2 3 4 5 6<br>
<br>
str(DT[,"a", with = FALSE])<br>
# Classes ‘data.table’ and 'data.frame':        6 obs. of  1 variable:<br>
# $ a: int  1 2 3 4 5 6<br>
# - attr(*, ".internal.selfref")=<externalptr><br>
<br>
str(DT[, thisone, with = FALSE])<br>
# Classes ‘data.table’ and 'data.frame':        6 obs. of  1 variable:<br>
# $ a: int  1 2 3 4 5 6<br>
# - attr(*, ".internal.selfref")=<externalptr><br>
<br>
I can't noodle out from the help why the latter two don't produce a vector as the first one does. I'm looking at this online resource <a href="http://www.rdocumentation.org/packages/data.table/functions/data.table" target="_blank">http://www.rdocumentation.org/packages/data.table/functions/data.table</a> and it doesn't seem like the description of with points to having two different results.<br>
<br>
"with           By default with=TRUE and j is evaluated within the frame of x; column names can be used as variables. When with=FALSE, j is a vector of names or positions to select, similar to a data.frame. with=FALSE is often useful in data.table to select columns dynamically."<br>
<br>
How should I extract a single column dynamically to retrieve a vector?<br>
<br>
Cheers and thanks,<br>
Ben<br>
<br>
> sessionInfo()<br>
R version 3.1.0 (2014-04-10)<br>
Platform: x86_64-apple-darwin13.1.0 (64-bit)<br>
<br>
locale:<br>
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8<br>
<br>
attached base packages:<br>
[1] stats     graphics  grDevices utils     datasets  methods   base<br>
<br>
other attached packages:<br>
[1] data.table_1.9.5 devtools_1.6.1<br>
<br>
loaded via a namespace (and not attached):<br>
[1] chron_2.3-45   evaluate_0.5.5 formatR_1.0    httr_0.5       knitr_1.7      RCurl_1.95-4.1 stringr_0.6.2<br>
[8] tools_3.1.0<br>
<br>
Ben Tupper<br>
Bigelow Laboratory for Ocean Sciences<br>
60 Bigelow Drive, P.O. Box 380<br>
East Boothbay, Maine 04544<br>
<a href="http://www.bigelow.org" target="_blank">http://www.bigelow.org</a><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
datatable-help mailing list<br>
<a href="mailto:datatable-help@lists.r-forge.r-project.org">datatable-help@lists.r-forge.r-project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">Paul E. Johnson<br>Professor, Political Science      Assoc. Director<br>1541 Lilac Lane, Room 504      Center for Research Methods<br>University of Kansas                 University of Kansas<br><a href="http://pj.freefaculty.org" target="_blank">http://pj.freefaculty.org</a>               <a href="http://quant.ku.edu" target="_blank">http://quant.ku.edu</a></div>
</div>