gpt4 book ai didi

当列名在别处预定义时,R data.table 在条件子集设置方面苦苦挣扎

转载 作者:行者123 更新时间:2023-12-02 16:35:15 25 4
gpt4 key购买 nike

假设我有一个数据表

library(data.table)
DT <- data.table(x=c(1,1,0,0),y=c(0,1,2,3))
column_name <- "x"

x y
1: 1 0
2: 1 1
3: 0 2
4: 0 3

我想访问所有 x = 1 的行,但是使用 column_name。

所需的输出应该像这样:

DT[x==1,]
x y
1: 1 0
2: 1 1

但在输入中将 x 替换为 column_name

请注意,此问题与Select subset of columns in data.table R 类似但不完全相同。 ,那里的解决方案(使用 with=FALSE)在这里不起作用。

这是我尝试过的所有方法。它们都不起作用。

DT[column_name ==1,]
DT[.column_name ==1,]
DT[.(column_name) ==1,]
DT[..column_name ==1,]
DT[."column_name" ==1,]
DT[,column_name ==1,]
DT[,column_name ==1,with=TRUE]
DT[,column_name ==1,with=FALSE]
DT[,.column_name ==1,with=TRUE]
DT[,.column_name ==1,with=FALSE]
DT[,..column_name ==1,with=TRUE]
DT[,..column_name ==1,with=FALSE]
DT[,."column_name" ==1,with=TRUE]
DT[,.column_name ==1,with=FALSE]
DT[column_name ==1,with=TRUE]
DT[column_name ==1,with=FALSE]
DT[[column_name==1,]]
subset(DT,column_name==1)

我还启用了选项(datatable.WhenJisSymbolThenCallingScope=TRUE)

显然我缺少某种词汇技巧。我花了几个小时查看小插图和 SO 问题,但无济于事。

最佳答案

我可以想象这让您非常沮丧。我赞赏您在发布之前尝试过的事情的数量。这是一种方法:

DT[get(column_name) == 1,]
x y
1: 1 0
2: 1 1

如果需要在J中使用column_name,可以使用get(..column_name):

DT[,get(..column_name)]
[1] 1 1 0 0

.. 指示在父环境中进行评估。

IJ 中使用字符串的另一种方法是使用 eval(as.name(column_name)):

DT[eval(as.name(column_name)) == 1]
x y
1: 1 0
2: 1 1

DT[,eval(as.name(column_name))]
[1] 1 1 0 0

关于当列名在别处预定义时,R data.table 在条件子集设置方面苦苦挣扎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62807213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com