我试图使用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
要慢。
答案 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))