Дублированная функция не выполняется для векторов даты ff

Привет я пытаюсь удалить дубликаты из вектора ff, который содержит даты, используя функцию дублирования пакета ffbase и следующий код:

v1 <- c("24-Mar-94", "24-Mar-94", "27-Mar-94", "28-Jun-1986", "29-Jul-1988", "28-Jun-1986", "15-Jan-1999", "13-Jan-1999")
v1.d <- as.Date(v1, format="%d-%b-%y")
v1.ff <- as.ff(v1.d)
v2 <- v1.ff[!duplicated(v1.ff)]

Однако я получаю следующую ошибку:

Error in UseMethod("as.hi") : 
  no applicable method for 'as.hi' applied to an object of class "Date"

Есть ли способ обойти эту проблему, не приводя сначала вектор v2 к объекту оперативной памяти?

2 ответа

Решение

Попробуй это:

library(ff)
v1 <- c("24-Mar-94", "24-Mar-94", "27-Mar-94", "28-Jun-1986", "29-Jul-1988", "28-Jun-1986", "15-Jan-1999", "13-Jan-1999")
v1.d <- as.Date(v1, format="%d-%b-%y")
v1.ff <- as.ff(v1.d)
v2 <- v1.ff[ !duplicated(v1.ff[,])  ]

Выход:

> v1.d
[1] "1994-03-24" "1994-03-24" "1994-03-27" "2019-06-28" "2019-07-29" "2019-06-28" "2019-01-15" "2019-01-13"
> v2
[1] "1994-03-24" "1994-03-27" "2019-06-28" "2019-07-29" "2019-01-15" "2019-01-13"

И это дедупедировано.

ff объекты должны быть особенно разрезаны / подмножество, чтобы надлежащим образом использовать функции на них. Одним из способов является использование выше [,] или же [] (для этого, так как это вектор), чтобы создать вектор со всеми элементами, а затем использовать duplicated в теме.

Используйте sapply, чтобы сначала получить только уникальные даты, а затем привести их к объекту ffbase.

library(ffbase)
v1 <- c("24-Mar-94", "24-Mar-94", "27-Mar-94", "28-Jun-1986", "29-Jul-1988", "28-Jun-1986", "15-Jan-1999", "13-Jan-1999")
v1<-sapply(v1,unique)
v1.d <- as.Date(v1, format="%d-%b-%y")
v1.ff <- as.ff(v1.d)
Другие вопросы по тегам