Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R数据表中的差异过滤器_R_Filter_Data.table - Fatal编程技术网

R数据表中的差异过滤器

R数据表中的差异过滤器,r,filter,data.table,R,Filter,Data.table,我想过滤diff()函数的结果,并使用data.table的效率 DT[diff(timestamp) > 10] 不会执行此工作,因为结果集比源短。即使创建一个过滤器,而不是子集,也至少会创建一个警告(我想阻止它) 我可以使用dplyr或其他,但我希望data.table的效率。有什么建议吗?正如罗兰指出的那样,这个错误源于diff()的性质。当应用于长度n的向量时,它返回长度n-1的向量 例如: diff(c(2, 4, 9)) [1] 2 5 使用逻辑向量子集data.table

我想过滤diff()函数的结果,并使用data.table的效率

DT[diff(timestamp) > 10]
不会执行此工作,因为结果集比源短。即使创建一个过滤器,而不是子集,也至少会创建一个警告(我想阻止它)


我可以使用dplyr或其他,但我希望data.table的效率。有什么建议吗?

正如罗兰指出的那样,这个错误源于
diff()的性质。当应用于长度
n
的向量时,它返回长度
n-1
的向量

例如:

diff(c(2, 4, 9))
[1] 2 5
使用逻辑向量子集data.table时,其行数必须等于向量的长度。因此,可能的解决办法包括:

DT[-1][diff(DT$timestamp) > 10]
DT[c(FALSE, diff(timestamp) > 10)]
我可能会这样做:

DT[timestamp - shift(timestamp) > 10]

嗯,根据您想要实现的目标,您必须附加或前置一个
TRUE
FALSE
值。这不是特定于数据表的,而是基于一个简单的事实,即两个值之间总是存在差异。@Roland,是的,这一点很清楚。我的问题是什么是编程上最干净的解决方法。谢谢
DT[timestamp - shift(timestamp) > 10]