在R中,duplicated()中的fromLast参数是否适用于integer64向量?

时间:2018-02-06 15:22:30

标签: r

我试图使用fromLast函数中的duplicated()参数来识别整数64向量中的重复项(我的行按时排序,我想丢弃更早的时间点,保持最新的独特价值)。它似乎不起作用。

适用于常规整数向量:

> x <- c(1, 2, 3, 3, 4)

> base::duplicated(x)
[1] FALSE FALSE FALSE  TRUE FALSE

> base::duplicated(x, fromLast = TRUE)
[1] FALSE FALSE  TRUE FALSE FALSE

这是正确的行为。

但它不适用于整数64向量:

> x <- as.integer64(c(1, 2, 3, 3, 4))

> base::duplicated(x)
[1] FALSE FALSE FALSE  TRUE FALSE

> base::duplicated(x, fromLast = TRUE)
[1] FALSE FALSE FALSE  TRUE FALSE

有什么想法吗?

duplicated.integer64()函数没有fromLast参数。

我可以rev(duplicated(rev(x))),但根据基本R的文档,这比使用fromLast=TRUE要慢。

1 个答案:

答案 0 :(得分:2)

问题在于调度的方法。它正在调用duplicated.integer64。如果我们想要相同的行为,请使用duplicated.default

duplicated.default(x, fromLast = TRUE)
#[1] FALSE FALSE  TRUE FALSE FALSE

通过检查duplicated.integer64,它没有fromLast参数

> duplicated.integer64
function (x, incomparables = FALSE, nunique = NULL, method = NULL, 
...) 

fromLast

中有duplicated.default的参数
> duplicated.default
 function (x, incomparables = FALSE, fromLast = FALSE, nmax = NA, 
  ...) 

数据

library(bit64)
x <- as.integer64(c(1, 2, 3, 3, 4))