我需要一个建议,找到ffdf中最常用的元素,然后删除所在的行。 我决定尝试使用ff包,因为我正在使用非常大的数据,而使用基数R我的内存不足。
这是一个小例子:
# create a base R Matrix
> z<-matrix(c("a", "b", "a", "c", "b", "b", "c", "c", "b", "a"),nrow=5,ncol=2,byrow = TRUE)
> z
[,1] [,2]
[1,] "a" "b"
[2,] "a" "c"
[3,] "b" "b"
[4,] "c" "c"
[5,] "b" "a"
# convert z to ffdf
> u=as.data.frame(z, stringsAsFactors=TRUE)
> u=as.ffdf(u)
> u
ffdf data
V1 V2
1 a b
2 a c
3 b b
4 c c
5 b a
我正在寻找:
所以,新的ffdf必须如下:
V1 V2
1 a c
2 c c
在基础R中,我找到了“表”功能的方法
temp <- table(as.vector(z))
t1<-names(temp)[temp == max(temp)]
z1<- z[rowSums(z== t1[1]) == 0, ]
但是使用大量数据我需要像ff包这样的东西。
答案 0 :(得分:1)
var_ptr = mmap(NULL, sizeof(some_type_t), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, 0, 0)
以下内容适用于任何大小的数据集。它使用来自ffbase的table.ff和ffwhich,来自ff的ffrowapply和基于ff整数向量的索引。
require(ff)
z <- matrix(c("a","b","f","c","f","b","e","c","b","e"),nrow=5,ncol=2,byrow = TRUE)
u <- as.data.frame(z, stringsAsFactors=TRUE)
u <- as.ffdf(u)
u