Произвольно сэмплировать вектор на равные куски 'n-1' и оставшиеся элементы в последнем фрагменте, используя R - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть вектор размером 100 (от 1: 100).

V <- 1:100

Я хочу разделить этот вектор на 'n' блоков, и каждый блок будет иметь элементы случайной выборки, взятые из вектора 'V' без замены . Например: если n = 9, в первых 8 чанках будет по 12 элементов в каждом (случайная выборка), а в 9-м чанке - оставшиеся элементы, т.е. 4

Как я могу это сделать?

1 Ответ

1 голос
/ 03 февраля 2020

Вы можете просто сэмплировать весь вектор, а затем использовать split, чтобы сгенерировать список с желаемыми векторами. Для размера 12 вы можете сделать, как показано ниже, и просто изменить знаменатель по мере необходимости для разных размеров.

set.seed(1)
s <- sample(V)
split(s, ceiling(seq_along(s)/12))
#> $`1`
#>  [1] 68 39  1 34 87 43 14 82 59 51 85 21
#> 
#> $`2`
#>  [1] 54 74  7 73 79 37 83 97 44 84 33 35
#> 
#> $`3`
#>  [1] 70 96 42 38 20 28 72 80 40 69 25 99
#> 
#> $`4`
#>  [1] 91 75  6 24 32 94  2 45 18 22 92 90
#> 
#> $`5`
#>  [1]  98  64 100  62  23  67  49  50  65  11  17  36
#> 
#> $`6`
#>  [1] 13 66 47 48 76 29 57 55 77 71 12 16
#> 
#> $`7`
#>  [1] 52 81 89 46 63  9 86 19 56 60 95 10
#> 
#> $`8`
#>  [1] 26 15 78 30  3 58 61 31 27  8 41 53
#> 
#> $`9`
#> [1] 93  5 88  4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...