使用复合条件对data.table进行子集

时间:2015-08-14 18:44:10

标签: r data.table conditional-statements subset

这篇文章涉及使用包数据的子集化数据。基于包括逻辑AND运算符的复合条件,特别是用&获得的结果的差异。 vs&&。

环境:R版本3.2.1(2015-06-18),x86_64-w64-mingw32 / x64(64位),Windows 10 Pro,data.table 1.9.4。

我正在对回归调用中使用的data.table进行子集化;模型的细节在下面被抑制,但调用的数据子句被完整复制。

lm( y ~ u + v + w, data=DT[condo != 1 &<&> apt != 1] ) 

包含第二个&(在尖括号中)提供了表达式的替代形式。

Data.table DT约有。 25,000行。变量condoapt{0,1}中的值永远无效的虚拟变量。事实证明,在我正在处理的实例中,变量apt总是0

使用单个&根据需要选择DT行,不包括condo == 1行。但是,当使用两个&符号&&时,不会排除任何行,并且会针对所有DT运行回归。

所以我的问题:为什么会发生这种情况? package data.table如何处理针对DT行的i条件? &&condo[1]apt[1]的尊重行为是否解释了观察到的行为? (在data.table的第一行,condo = 0apt = 0。)

还有一个额外的问题:在condo != 1这样的条件应该在什么条件下写成condo != 1L,如果R存储(未声明的)整数是双倍的?这不仅仅是一个空闲的问题;基于虚拟对象的数据子集在我的工作中经常出现。

0 个答案:

没有答案