gpt4 book ai didi

r - 如何通过在 R 的 data.table 中建立索引来执行逻辑运算符?

转载 作者:行者123 更新时间:2023-12-04 11:12:24 26 4
gpt4 key购买 nike

我想弄清楚如何执行 logical operators当我使用 索引data.table packageR ?

以下是示例。我做了一个 datatable命名为 dt .然后制作 var2作为我的 key datatable :

> dt = data.table(var1 = rep(LETTERS[1:5],2), var2 = seq(1,20, 2), var3 = ceiling(rnorm(10, 3, 2)))
> dt
var1 var2 var3
1: A 1 5
2: B 3 3
3: C 5 0
4: D 7 6
5: E 9 3
6: A 11 4
7: B 13 2
8: C 15 1
9: D 17 3
10: E 19 7

> setkey(dt, var2)

所以现在我想识别我已经定义的所有值 key (var2)分别是 less than 10 ( <10) .做以下尝试给我 errors .
> dt[ < 10]
Error: unexpected '<' in "dt[ <"
> dt[ .< 10]
Error in eval(expr, envir, enclos) : object '.' not found
> dt[ .(< 10)]

我的期望是:
     var1 var2 var3

1: A 11 4
2: B 13 2
3: C 15 1
4: D 17 3
5: E 19 7

顺便说一句,我知道只要做 dt[var2 <10]我会得到结果。但是请考虑我想在 data.table 中获得索引的概念并了解并知道如何在不调用 key(var2) 的情况下进行操作在我的每一个命令中!


任何有关解释的帮助都非常感谢。

最佳答案

来自 ?setkey , key(dt)获取字符向量中的关键列。假设你的表只有一个键列,那么你可以得到你想要的:

dt[dt[[key(dt)]] < 10]

感谢 David Arenburg,您也可以使用 get() :
dt[get(key(dt)) < 10]

这有点短,可能是要走的路。

我能想到的另一种方式要糟糕得多:
dt[eval(parse(text = paste(key(dt), "< 10")))]

关于r - 如何通过在 R 的 data.table 中建立索引来执行逻辑运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44877224/

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