如何将列名作为变量传递给R中的data.table?

时间:2016-11-03 04:47:24

标签: r data.table

我想将一个变量(将列名保存为字符串)作为data.table的参数传递。我该怎么做?

考虑下面的data.table:

myvariable <- "a"
myvariable_2 <- "b"

DT = data.table(ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c = 13:18)
DT
#    ID a  b  c
# 1:  b 1  7 13
# 2:  b 2  8 14
# 3:  b 3  9 15
# 4:  a 4 10 16
# 5:  a 5 11 17
# 6:  c 6 12 18
  1. 我可以使用subset来提取列,例如:subset(DT, TRUE, myvariable)但这只是输出列/ s
  2. 如何根据某些条件使用subset提取列?例如:extract myvariable column when myvariable_2 < 10
  3. 如何通过将列名称作为变量传递来提取组的摘要统计信息?
  4. 如何通过将列名称作为变量传递来使用data.table绘制描述性图?
  5. 我知道在data.frame中这可能更容易,即将变量作为列名传递。但我到处都读到data.table更快/更高效的内存,因此我想坚持下去。

    data.tabledata.frame之间的切换是否会产生巨大的内存/性能影响?

    我不想显式编写列名,因为我希望这段代码可以重复使用。

1 个答案:

答案 0 :(得分:3)

来自@thelatemail的评论是一个非常好的开始。先读一下!另一个快速的方法是

library(data.table)
df = data.table(a=1:10, b=letters[1:2], c=11:20)

var1="a"
var2="b"

dt1=df[,c(var1,var2), with=F]

想想&#34; = F&#34;制作&#34; j&#34; part data.table的行为类似于data.frame

编辑1:对数据表中的条件进行子集

df[get(var1) > 5, c(var1, var2),with = F]