Dan*_*iel 5 indexing r key logical-operators data.table
我试图找出我如何执行logical operators,当我使用索引中data.table package的R?
以下是示例.我datatable命名为dt.然后把它var2作为我的关键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")))]
| 归档时间: | 
 | 
| 查看次数: | 243 次 | 
| 最近记录: |