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

Rya*_*son 4 performance r

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

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

long.char.vector = sample(c("left", "middle", "right"), replace=TRUE, 50000000)
long.factor = factor(long.char.vector)
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*ich 8

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

big.factor <- sample(factor(c("left", "middle", "right")), replace=TRUE, 5e7)
Run Code Online (Sandbox Code Playgroud)

  • 确实+1.类似的版本是`因子(c("左","中","右"))[样本(3,5e7,替换= TRUE)],即通过采用短因子并重复索引生成长因子它. (5认同)