2012-01-22 2 views
1

У меня есть список данных, како генерации случайных чисел в последовательном процессе выборки

12345 
23456 
67891 
-20000 
200 
600 
20 
... 

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

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

ответ

4

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

+0

Я бы подумал, что это было задано и ответили, но поисковая система, похоже, не особенно полезна при использовании '[r] образца без замены'. –

3

Я не совсем уверен, что я понимаю вопрос, но вот один из способов выборки без замены вектора, а затем разделить этот вектор на два на основе выборки. Это может быть легко распространено на другие типы данных (например, 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]) 
+1

Невыбранный может быть получен просто с помощью: 'X [-sampled.idx]' –

+0

Спасибо. Полностью забыл об этом. Благодарю. Я обновлю свой пост. –

Смежные вопросы