Мой подход будет примерно таким:
system.time({
index <- as.ff( which( a.fdf[,'Location'] == 'exonic') );
table(a.fdf[index,][,'Function']);
});
user system elapsed
1.128 0.172 1.317
Кажется, значительно быстрее, чем:
system.time({
bw <- ffwhich(a.fdf, Location=="exonic");
table(a.fdf[bw,'Function']);
})
user system elapsed
24.901 0.208 25.150
YMMV, так как это факторы, а не символы, и мой ffdf ~ 4.3M * 42.
identical(table(a.fdf[bw,'Function']), table(a.fdf[index,][,'Function']));
[1] TRUE