2015-07-16 3 views
0

У меня есть вопрос о том, как образецR: как образец

У меня есть dataframe под названием «инвентаризации», который выглядит следующим образом (1000 строк)

inventory_date number_purchases 
1  1/1/1986    20 
2  2/4/1992    15 
3  12/13/2001    10 

Я хочу попробовать 5 из строки

Это мой код

samplesize <- c(5,10,15,20,25) 

for (m in 1:length(samplesize)) 
{ 
    mysample <- sample(inventory, samplesize[m], replace=FALSE) 
} 

Когда я запускаю код, он занимает 1000 не образец 5, 10, 15 и т.д. Это И.Г. noring samplesize [m] Почему? Что не так с моим кодом?
Кажется прямолинейным.

+2

Замените 'sample (inventory, ...)' '' inventory [sample (1: nrow (inventory) ...),] '. Вы должны быть явным, что вы взяли выборку из строк. – Gregor

ответ

1

В вашем случае вы фактически не хотите генерировать случайные данные, потому что у вас уже есть это. Вместо этого вы произвольно выбираете 5 строк из своего фрейма данных. Попробуйте использовать этот код:

// generate 5 random row indices 
random.indices <- sample(1:nrow(inventory), 5, replace=FALSE) 

// use these random indices to access rows from your data frame 
for (m in 1:5) { 
    sample.row <- inventory[random.indices[m], ] 
    // use this random row in your calculation 
} 
+0

Даже 'for (m в образце (5))' будет работать - 'sample' вычисляется только один раз. Затем просто выполните инвентарь [m,] '. –

+0

Я не был уверен, почему у него была петля, поэтому я боялся ее удалить. Да, я согласен с вашим комментарием. –

+0

спасибо за ваши предложения. Мне определенно нужен цикл, потому что для данных мне нужно выбирать n строк каждый раз. поэтому в первый раз, когда я цикл, я должен выбрать 5 случайных строк, затем следующий цикл, 10 случайных строк и т. д. Я не уверен, что случилось с моим кодом. –

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