我想将一个变量(将列名保存为字符串)作为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
subset
来提取列,例如:subset(DT, TRUE, myvariable)
但这只是输出列/ s subset
提取列?例如:extract myvariable column when myvariable_2 < 10
我知道在data.frame
中这可能更容易,即将变量作为列名传递。但我到处都读到data.table
更快/更高效的内存,因此我想坚持下去。
data.table
和data.frame
之间的切换是否会产生巨大的内存/性能影响?
我不想显式编写列名,因为我希望这段代码可以重复使用。
答案 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]