如何有效地构建一个很少级别的长因子?

时间:2011-04-11 20:37:36

标签: r performance

在R中,我想创建一个只有几个级别的因子,但长度接近1亿。我创建因子的“正常”方式是在字符向量上调用factor,但我希望这种方法效率很低。在没有完全扩展相应的字符向量的情况下构造长因子的正确方法是什么。

以下是错误的方法的示例:创建然后分解字符向量:

long.char.vector = sample(c("left", "middle", "right"), replace=TRUE, 50000000)
long.factor = factor(long.char.vector)

如何在不先构建long.factor的情况下构建long.char.vector?是的,我知道可以组合这两行代码,但最终的代码行仍会创建巨大的char矢量。

2 个答案:

答案 0 :(得分:8)

它不会更有效率,但您可以采样因子向量:

big.factor <- sample(factor(c("left", "middle", "right")), replace=TRUE, 5e7)

答案 1 :(得分:3)

你可以从头开始构建因子:

long.factor <- sample(seq.int(3), replace=TRUE, 50000000)
levels(long.factor) <- c("left", "middle", "right")
class(long.factor) <- "factor"