当我运行这两行代码时,数据是data.table对象:
data[,is.unsorted(POSIXct, na.rm=T)]
data[,which(diff(POSIXct)<0)]
那是我得到的结果
> data[,is.unsorted(POSIXct, na.rm=T)]
[1] TRUE
> data[,which(diff(POSIXct)<0)]
integer(0)
我很困惑,因为如果数据未排序,那么是否应该至少存在一个为负值的时差?
答案 0 :(得分:3)
您的问题是缺少值。检出
x <- c(1, NA, 0)
is.unsorted(x, na.rm=TRUE)
# TRUE
which(diff(x)<0)
# integer(0)
diff
函数进行成对的距离,它不会跳过丢失的值。你可以看到
diff(x)
# [1] NA NA
因此,没有成对的值小于0,因为它们正与NA进行比较(which
仅丢弃NA值)。