r - Access data.table columns with strings -
apologies question makes obvious work in python/pandas, i'm stuck this. how select data.table
column using string?
dt$"string" dt$as.name("string") dt$get("string")
i'm sure super simple, i'm not getting it. appreciated!
-------------- edited add ----------------------
after of helpful comments , tips below, think i've narrowed down problem bit , have reproducible example. consider:
dt = data.table(id = c("a","a","a","b","b","b"), col1=rnorm(6), col2=rnorm(6)*100)
and assume want assign values in col2
col1
. i've learned below, data.table
syntax dt[,col1:=col2]
, clean , simple. problems start when 1 (or both) of variables in j
argument strings. found following:
dt[, "col1":=col2]
works expected
dt[, "col1":="col2"]
fails expected (tries assign character col2
double vector col1
dt[, "col1":=get("col2")]
works expected
dt[, get("col1")]
returns col1
expected
but: dt[, get("col1"):=col2]
or other assignment fails.
some context: reason doing i'm constructing strings in loop, access larger number of columns named colname_colnumber
, i.e. loop on colname
, colnumber
access column paste0(colname,colnumber)
.
you can use get()
j
argument using single brackets:
library(data.table) dt <- data.table(iris) dt[, get("species")]
the result:
[1] setosa setosa setosa setosa setosa setosa .....
you can use string directly inside double bracket operator, this:
dt[["species"]]
Comments
Post a Comment