这是我认为应该问这个问题的问题.我想在R-forge跟踪器中将其作为一个错误/不一致之前确认是否存在错误/不一致.
考虑一下data.table:
require(data.table)
DT <- data.table(x=c(1,0,NA), y=1:3)
现在,要访问不是 0 的DT的所有行,我们可以通过以下方式执行:
DT[x != 0]
#    x y
# 1: 1 1
DT[!(x == 0)]
#     x y
# 1:  1 1
# 2: NA 3
当基础逻辑操作等效时,访问DT[x != 0]并DT[!(x==0)]给出不同的结果.
注:转换到这一个data.frame和运行这些操作会给结果彼此两个逻辑上是等价的操作相同,但结果是不同的两种data.table结果.有关原因的解释,请?`[`参阅本节NAs in indexing.
编辑:由于你们中的一些人已经强调要求平等data.frame,这里是data.frame上相同操作的输出片段:
DF <- as.data.frame(DT)
# check ?`[` under the section `NAs in indexing` as to why this happens
DF[DF$x != 0, …我在数据表中有一个包含NaN值的列.就像是:
my.dt <- data.table(x = c(NaN, NaN, NaN, .1, .2, .2, .3), y = c(2, 4, 6, 8, 10, 12, 14))
setkey(my.dt, x)
我可以使用该J()函数来查找x列等于.2的所有实例
> my.dt[J(.2)]
     x  y
1: 0.2 10
2: 0.2 12
但如果我尝试用NaN它做同样的事情就行不通.
> my.dt[J(NaN)]
     x  y
1: NaN NA
我希望:
     x  y
1: NaN  2
2: NaN  4
3: NaN  6
是什么赋予了?我在data.table文档中找不到任何解释为什么会发生这种情况的事情(尽管可能只是因为我不知道该寻找什么).有什么方法可以得到我想要的东西吗?最后,我想NaN用零替换所有值,使用类似的东西my.dt[J(NaN), x := 0]
我需要为id分组的显式行获取行号.假设dataframe(df)如下所示:
 id  a   b 
 3   2   NA
 3   3   2
 3   10  NA
 3   21  0
 3   2   NA
 4   1   5
 4   1   0
 4   5   NA
我需要创建一个列,它将给出行号序列,不包括大小写b == 0.
期望的输出:
 id  a   b   row
 3   2   NA   1
 3   3   2    2
 3   10  NA   3
 3   21  0    -
 3   2   NA   4
 4   1   5    1
 4   1   0    -
 4   5   NA   2
我使用dplyr但无法实现相同,我的代码:
df <- df %>%
       group_by(id) %>%
       mutate(row = row_number(id[b …