我有一个问题(也许这并不困难,但我无法弄明白:
我有一个25的列表(l),我想将列表分成5组但是随机。我遇到的问题是,如果我使用 sample(l,5),这5次它不会给我独特的样本。所以基本上,我正在寻找的是选择5然后从列表中删除它们然后再次采样。
我希望有人有解决方案......谢谢
答案 0 :(得分:2)
如果你想将安德鲁的方法作为一种功能
sample2 <- function(x, sample.size){
split(x, sample(ceiling(seq_along(x)/sample.size)))
}
sample2(1:20, 5)
给出
$`1`
[1] 1 15 6 3 18
$`2`
[1] 11 7 5 10 14
$`3`
[1] 2 12 4 13 17
$`4`
[1] 19 16 20 8 9
答案 1 :(得分:1)
另一种方法......
x <- 1:20
matrix(x[sample(seq_along(x),length(x))],ncol = 4)
这里我们通过对索引值进行抽样来随机重新排序您的向量,然后将结果转储到矩阵中,以便其列代表您的五个组。您也可以将其保留为矢量,或者如果您不希望将输出作为矩阵,则可以创建列表。
答案 2 :(得分:0)
你可以这样做......
l <- as.list(LETTERS[1:25])
l2 <- split(l,rep(1:5,5)[sample(25)])
l2 #is then a list of five lists containing all elements of l...
$`1`
$`1`[[1]]
[1] "D"
$`1`[[2]]
[1] "I"
$`1`[[3]]
[1] "M"
$`1`[[4]]
[1] "W"
$`1`[[5]]
[1] "Y"
$`2`
$`2`[[1]]
[1] "C"
$`2`[[2]]
[1] "E"
$`2`[[3]]
[1] "H"
$`2`[[4]]
[1] "T"
$`2`[[5]]
[1] "X"
etc...