如何在 Base 中生成 "Unbalanced"(不等)因子水平?

How to generate "Unbalanced" (unequal) factor levels in Base?

背景:

我通常使用 gl() 为一组随机变量生成“相等”数量的因子水平。例如,要为 x 中的 60 个随机变量生成 2 因子水平,我使用以下内容:

x = rnorm(n = 60)
groups = gl( 2, length(x)/2 ) ## My Factor Levels

但在上面,不允许我为 x 中的第一个 40 元素生成 40 因子水平,以及 20 因子水平x 中的最后 20 个元素(即 “不平衡”(不相等)因子水平)。

问题:

在基础 R 中, 是否有灵活的函数或策略来产生“不平衡”(不平等)因子水平?

您可以将 rep 与矢量值 times 参数一起使用:

x <- factor( rep(1:3, times=c(5,10,2)) )
x

这给出:

[1] 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
Levels: 1 2 3