Суббота, 04.04.2026, 21:47Приветствуем вас Гость | RSS
Решение задач в среде R
Главная | Перемешать вектор | Регистрация | Вход
» Меню сайта

» R практикум

» R кодинг

» Rmatem

» Опрос
Сколько вам лет?
Всего ответов: 9

» Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Перемешать элементы вектора случайным образом

Пусть имеется вектор целых чисел от 1 до 100. Нам необходимо создать новый вектор, путем случайного перемешивания элементов исходного вектора.Это можно сделать с помощью конструкции:

 # перемешивание shuffled vector
x = 1:100
x1 = sample(x) 
sum(x) == sum(x1)

> # перемешивание shuffled vector
> x = 1:100
> x1 = sample(x) 
> x1
 [1] 97 94 98 83 73 66 68 3 30 51 59 26 52 90 95 21 25 24 88
 [20] 31 41 81 75 9 91 50 86 20 39 60 92 23 56 10 35 99 11 79
 [39] 19 100 7 1 34 69 74 53 77 40 44 61 76 28 63 96 78 58 85
 [58] 47 18 43 67 62 80 87 70 82 2 42 46 71 72 48 27 36 38 84
 [77] 89 13 64 55 93 4 45 54 22 5 37 29 16 6 32 14 12 15 49
 [96] 8 65 17 57 33
> sum(x) == sum(x1)
[1] TRUE

# x = c(1,2,3,4,...100)
# Я хочу рандомизировать этот вектор "локально"  на основе некоторого входного числа - "фактора локальности".  Например, если коэффициент локальности равен 3,  то берутся первые 3 элемента и рандомизируются,  за которыми следуют следующие 3 элемента и так далее. Есть ли эффективный способ сделать это? 

x <- 1:50
fact <- 5

y <- ceiling(length(x)/fact)

xx = unlist(lapply(split(x, rep(1:y, each =fact)[1:length(x)]), function(x){
  if (length(x)==1) return(x)
  sample(x)
}), use.names = FALSE)
j=1
for (k in 1:10) {
  l = k*5
 print(xx[j:l])
 j=l
}

[1] 2 3 4 1 5
[1] 5 8 6 7 10 9
[1] 9 13 12 15 14 11
[1] 11 17 16 20 18 19
[1] 19 25 23 21 22 24
[1] 24 28 26 30 29 27
[1] 27 35 34 31 33 32
[1] 32 36 38 40 39 37
[1] 37 41 44 42 45 43
[1] 43 46 49 47 50 48

 

» Вход на сайт

» Поиск

» Работа с файлами

» Вся графика

» Гистогра́мма

» Теория вероятности

» Сравнение групп

» Дисперс анализ

» Блог

» Календарь
«  Апрель 2026  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930

» Архив записей


Copyright MyCorp © 2026
uCoz