Генерация нескольких перестановок в R - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть фрейм данных, для которого я хочу перетасовать значения только в одном столбце, 1000 раз, сохраняя значения в остальных столбцах нетронутыми для теста случайной перестановки для классификации случайного леса. Хотя я знаю, как генерировать 1 перестановку, используя sample в базовом пакете, как мне получить 1000 одновременно? Ниже приведен скриншот того, как выглядят данные (около 50 тыс. Строк и 28 переменных). enter image description here

Некоторые примеры данных могут быть сгенерированы с использованием:

data=data.frame(rep(1:3, each=10), rep(2:4, each=10), rep(10:12, each=10))
names(data)<-c("aH", "bH", "cH")

1 Ответ

0 голосов
/ 18 сентября 2018

Хотя я не могу комментировать достоверность вашего анализа, я предоставлю вам решение.

Мы зациклились на векторе 1: 100, используя lapply, чтобы сгенерировать 100 воспроизводимых перестановок одного столбца, связать его вместе с остальными данными и сохранить все выборки в списке.

data=data.frame(rep(1:3, each=10), rep(2:4, each=10), rep(10:12, each=10))
names(data)<-c("aH", "bH", "cH")

test <- lapply(1:100, function(x){
  set.seed(x)
  cbind.data.frame(data[,1:2], sample(data[,3]))
})

Другим вариантом будет пакет combinat и его функция permn(), которая генерирует все возможные перестановки входного вектора.

...