Генерировать случайное число в цикле for R

#r #loops #for-loop

#r #циклы #цикл for

Вопрос:

Я хочу запустить цикл for 1000 раз, генерируя новый набор новых чисел, которые затем запускаются через мою функцию cdfx. Однако, когда я запускаю свой код, я получаю: Ошибка: объект ‘rdm’ не найден.

  for (i in 1:1000) {
  rdm[i] <- runif(12, 17, 22)
  cdfxr <- cdfx(rdm[i])
  cdfxr[i] <- cdfxr 
}
  

Кто-нибудь, пожалуйста, может сказать мне, что я делаю не так?

Комментарии:

1. rdm Существует ли перед циклом? При попытке индексировать объект с помощью [i] он должен сначала существовать. Может быть, попробуйте rdm <- vector("numeric", 1000) перед вашим циклом, чтобы массив действительно существовал до того, как вы его проиндексируете.

2. На самом деле, похоже, что вы пытаетесь обрабатывать более одного числа за раз, в этом случае rdm должен быть список, и вы должны индексировать с помощью [[]] , поэтому попробуйте rdm <- vector("list", 1000) перед циклом и используйте rdm[[i]] вместо rdm[i]

3. Было бы намного быстрее сгенерировать один большой список с помощью runif(12*1000, 17, 22) , а затем при необходимости подмножествовать весь список.

4. Использовать replicate(1000, whatever_code) ? Или, как предложил Дейв tapply(runif(12*1000, 17, 22), rep(1:1000, each=12), cdfx) .