2017-02-05 6 views
1

У меня есть вектор с 663 элементов. Я хотел бы создать случайные выборки из вектора, равного длине вектора (т. Е. 663). Говоря иначе, я хотел бы взять случайные выборки из всех возможных порядков 663 элементов. Моя цель - создать кадр данных из N случайных выборок или случайно выбранных перестановок.Как нарисовать N случайных выборок из вектора в R?

Я попытался следующие:

library(combinat) 
perms <- as.data.frame(permn(1:663)) 

Поскольку существует так много возможных перестановок, я получил бы сообщение об ошибке.

Моей следующей идеей было бы создать фрейм данных с таким количеством строк, как я бы хотел, чтобы образцы/перестановки и столько же переменных, сколько и элементы (например, 663), и использовали функцию, такую ​​как sapply() с sample(). Однако я не думаю, что такой подход эффективен.

Я также попытался:

samples <- replicate(100, table(sample(1:663, 663,replace = F))) 

, но я просто получить кадр данных 100 столбцов из них.

+1

Потому что вы принимаете 'table'. Частота равна 1, поскольку вы используете 'replace = FALSE' – akrun

ответ

1

replicate будет работать

a <- 1:663 #vector of 663 elements 
perms <- as.data.frame(replicate(100, sample(a)))