относительно генерации случайных чисел в последовательном процессе выборки - PullRequest
1 голос
/ 22 января 2012

У меня есть список данных, как

12345
23456
67891
-20000
200
600
20
...

Предположим, что размер этого набора данных (то есть строк файла) равен N. Я хочу случайным образом нарисовать m строк из этого файла данных и вывести их в один файл, а остальные N-m строк поместить в другой файл данных. Я могу случайным образом нарисовать индекс по m-итерациям, чтобы получить эти m-строки. Проблема, которая смущает меня, состоит в том, как гарантировать, что случайно нарисованные m линий различны?

Есть ли способ сделать это в R?

Ответы [ 2 ]

4 голосов
/ 22 января 2012

Да, используйте sample(N, size=m, replace=FALSE), чтобы получить случайную выборку m из N без замены.Или просто sample(N, m), поскольку replace=FALSE является значением по умолчанию.

3 голосов
/ 22 января 2012

Я не совсем уверен, что понимаю вопрос, но вот один из способов выборки без замены из вектора, а затем разделить этот вектор на два на основе выборки. Это можно легко распространить на другие типы данных (например, data.frame).

## Example data vector.
X <- c(12345, 23456, 67891, -20000, 200, 600, 20)

## Length of data.
N <- length(X)

## Sample from the data indices, without replacement.
sampled.idx <- sample(1:N, 2, replace=FALSE)

## Select the sampled data elements.
(sampled <- X[sampled.idx])

## Select the non-sampled data elements.
(rest <- X[!(1:N %in% sampled.idx)])

## Update: A better way to do the last step.
## Thanks to @PLapointe's comment below.
(rest <- X[-sampled.idx])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...