2014-12-23 147 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