2014-12-23 75 views
1

您好我想從一個包含使用ffbase包的複製功能日期和下面的代碼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)] 

不過,我得到以下錯誤:

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

有沒有辦法解決這個問題,而不必先強制v2向量到ram對象?

+0

我想你不想在轉換爲ff之前使用'duplicated'?準確地說是 – LyzandeR

+0

。這是一個「截斷」的例子。我已經通過ffload在內存中使用了ff向量。 – NickD1

回答

1

試試這個:

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

+0

非常感謝你!這工作! – NickD1

+0

此外,我發現[this](http://cran.r-project.org/web/packages/ff/ff.pdf)非常有用,可以找到關於ff的一些細節,如果你想的話。 – LyzandeR

0

使用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) 
+0

嗨,感謝您的回覆,但對於不完全清楚的問題感到抱歉:這段代碼是我想要做的一個「簡明示例」,前兩行只是爲此目的服務。所以假設v1.ff是一個非常大的矢量,由ffload創建。所以我想只使用ff向量,而不是在可能的情況下使用ram副本。 – NickD1