使用get命令提取data.table列时如何指定列名
如何在data.table的
get()中指定返回列名 当然可以!使用get()函数提取列时,完全能自定义返回结果的列名,下面结合你的示例给出几种实用方法:
首先先回顾你的基础代码:
library(data.table) dt = data.table(one=rep(2,4), two=rnorm(4)) col_name = "one"
方法1:直接在.()内为get()表达式命名
这是最直接的方式,只要在get(col_name)前加上你想要的列名即可:
# 返回列名为原列名"one" dt[, .(one = get(col_name))] # 也可以自定义任意列名,比如"target_col" dt[, .(target_col = get(col_name))]
这种方式本质是给data.table的新列赋值,把get()的结果绑定到指定名称上,就不会出现默认的V1了。
方法2:用setnames()事后修改列名
如果你已经用dt[, .(get(col_name))]得到了默认列名为V1的结果,也可以用data.table的setnames()函数快速修改:
result <- dt[, .(get(col_name))] # 把默认的V1改成col_name对应的"one" setnames(result, "V1", col_name) result
这种方式适合需要先处理数据、再统一调整列名的场景,效率也很高(setnames()是原地修改,不复制数据)。
另外补充一句:其实你提到的dt[, col_name, with=FALSE]已经是提取指定列并保留原名的简洁方式,但如果一定要用get()的话,上面两种方法都能满足需求~
内容的提问来源于stack exchange,提问作者ATMA
相关产品推荐
相关产品推荐

