假设我有:
data <- expand.grid(factor1 = c("a","b"),
factor2 = c("left","right"),
factor3 = c("up","down"))
Run Code Online (Sandbox Code Playgroud)
假设我想从这个数据帧中复制行,这样我就可以定义每个因子的频率分布,并且尽可能少地复制每一行以满足该分布.例如,如果我将"factor1"的频率定义为(.5,.5),将"factor2"定义为(.25,.75),将"factor3"定义为(.4,.6),则我的数据框必须有2 X 4 X 5 = 40总行数.我可以做这个:
data2 <- expand.grid(factor1 = c("a","b"),
factor2 = c("left",rep("right",3)),
factor3 = c(rep("up",2),rep("down",3)))
Run Code Online (Sandbox Code Playgroud)
但这只有在我提前知道频率的情况下才有效 - 即便如此,从(.4,.6)到c(rep("a",2),rep("b",3))手工这样的传统似乎也不够优雅.有什么更好的方法呢?