为什么我使用data.table获得不同的结果索引

时间:2016-10-04 21:06:02

标签: r data.table

这是一个尝试提取某些行的简单示例 来自data.table,但似乎是相同的类型 逻辑向量,我得到不同的答案:

a <- data.table(a=1:10, b = 10:1)

a  # so here is the data we are working with

       a  b
   1:  1 10
   2:  2  9
   3:  3  8
   4:  4  7
   5:  5  6
   6:  6  5
   7:  7  4
   8:  8  3
   9:  9  2
  10: 10  1

因为我需要动态地提取第一列 指定列号作为我的处理的一部分

col <- 1L  # get column 1 ('a')

x <- a[[col]] > 5  # logical vector specifying condition
x
   [1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
str(x)
   logi [1:10] FALSE FALSE FALSE FALSE FALSE TRUE ...

查看[[col]]&gt;的结构5

a[[col]] > 5
   [1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
str(a[[col]] > 5)
   logi [1:10] FALSE FALSE FALSE FALSE FALSE TRUE ...

这看起来非常像'x',所以为什么这两种方式不同 索引'a'给出不同的结果

a[x]  # using 'x' as the logical vector
      a b
  1:  6 5
  2:  7 4
  3:  8 3
  4:  9 2
  5: 10 1

a[a[[col]] > 5]  # using the expression as the logical vector
  Empty data.table (0 rows) of 2 cols: a,b

0 个答案:

没有答案