我正在尝试使用duplicated()函数中的fromLast参数来识别integer64向量中的重复项(我的行是按时间排序的,我希望丢弃较早的时间点,而保留最近的唯一值)。它似乎不起作用。
它适用于正则整数向量:
> 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这是正确的行为。
但它在integer64向量上不起作用:
> 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))),但是根据base R的文档,这比使用fromLast=TRUE慢。
发布于 2018-02-06 23:27:17
问题出在调度的方法上。它正在调用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,
...) 其中,因为在duplicated.default中有fromLast的参数
> duplicated.default
function (x, incomparables = FALSE, fromLast = FALSE, nmax = NA,
...) 数据
library(bit64)
x <- as.integer64(c(1, 2, 3, 3, 4))https://stackoverflow.com/questions/48646365
复制相似问题