r data.table 以列名作为变量的行子集
r data.table row subset with column name as a variable
让我们先在 r.
中创建一个简单的 data.table
dt=data.table(x1=1:5,
x2=11:21)
如果我们想用行的条件对 data.table 进行子集化,我们可以简单地做,例如
dt[x1==1]
现在我的问题是:如果列名是一个变量怎么办?我试过 :
var="x1"
dt[eval(var)==1,]
但是这段代码不起作用。
eval
适用于以下示例:如果我们想按名称(即变量)获取一些列。
dt[x1==1,eval(var),with=F]
我猜你在找 get
:
library(data.table)
DT <- data.table(x1=1:11, x2=11:21)
var <- "x1"
DT[get(var)==1,]
选项.SD
DT[DT[, .SD[[var]] ==1]]
x1 x2
1: 1 11
给出与接受的答案相同的输出
DT[get(var)==1,]
x1 x2
1: 1 11
让我们先在 r.
中创建一个简单的 data.tabledt=data.table(x1=1:5,
x2=11:21)
如果我们想用行的条件对 data.table 进行子集化,我们可以简单地做,例如
dt[x1==1]
现在我的问题是:如果列名是一个变量怎么办?我试过 :
var="x1"
dt[eval(var)==1,]
但是这段代码不起作用。
eval
适用于以下示例:如果我们想按名称(即变量)获取一些列。
dt[x1==1,eval(var),with=F]
我猜你在找 get
:
library(data.table)
DT <- data.table(x1=1:11, x2=11:21)
var <- "x1"
DT[get(var)==1,]
选项.SD
DT[DT[, .SD[[var]] ==1]]
x1 x2
1: 1 11
给出与接受的答案相同的输出
DT[get(var)==1,]
x1 x2
1: 1 11