我有9个因子变量列表:item <- c("a","b","c","d","e","f","g","h","i")
。我想将9个因子变量中的每一个随机分配到3组。
我尝试过这个脚本,但可能需要做很多工作:
gp1 <- sample(item,3,replace=F)
> gp1
[1] "b" "h" "g"
我也尝试过cut函数,但变量必须是数字:
gp <- cut(item, breaks = 3)
Error in cut.default(item, breaks = 3) : 'x' must be numeric
预期输出应如下所示,但随机分配给每个组:
grp1 grp1 grp3
d b i
c e h
a g f
感谢您的帮助!
答案 0 :(得分:3)
只需对项目进行抽样并将其放入matrix
(如果您愿意,也可以将其转换为data.frame
):
matrix(sample(item), ncol = 3)
## [,1] [,2] [,3]
## [1,] "b" "d" "a"
## [2,] "f" "i" "e"
## [3,] "h" "g" "c"
如果项目不会被分割为相等的长度,您可以考虑split
,其中分割变量基于您想要的群组的混洗。
例如:
item <- item[-c(1, 2)]
split(item, sample(rep(1:3, length.out = length(item))))
## $`1`
## [1] "c" "e" "i"
##
## $`2`
## [1] "f" "g"
##
## $`3`
## [1] "d" "h"
##