Симуляция R программирования - PullRequest
0 голосов
/ 29 августа 2018

Я работал над проблемой симуляции в R. Проблема в

Шахтер заперт в шахте, и у него есть 3 двери на выбор.
Дверь 1 = он может выйти в шахту и займет 2 часа,
Door2 = он будет путешествовать через 3 часа, но только чтобы вернуться обратно в шахту,
Дверь 3 = та же ситуация, что и у двери 2, но 5 часов.

Я уже создал генератор случайных чисел, который остановится, если он получит 1 (используя цикл while), но моя проблема состоит в том, как повторить это 100 раз и поместить результаты в столбец таблицы. Есть ли более простое решение в решении этой проблемы? (R начинающий здесь)

Вот мой код .:

library(purrr) 
storage <-c() 
d = NULL 
x1 <- rdunif(1, 3, a=1) 

while ( x1 != 1) { 
  x1<- rdunif(1, 3, a=1) 
  storage <-c(storage, x1) 
} 

storage

1 Ответ

0 голосов
/ 29 августа 2018
  • хранить 100 экспериментов в списке из 100 частей
  • n означает номер двери 1. Если появляется дверь 1, введите следующий эксперимент.
  • trial означает порядок экспериментов

storage <- vector("list", 100)
n <- 0
trial <- 1
while(n < 100){
    x <- sample(1:3, 1)
    storage[[trial]] <- c(storage[[trial]], x)
    if(x == 1){
        n <- n + 1
        trial <- trial + 1
    }
}

storage

Впоследствии я предлагаю вам не преобразовывать список в фрейм данных, потому что длина каждого испытания различна. Он сгенерирует много значений NA с фреймом данных.

library(dplyr)
hour <- lapply(storage, recode, `1` = 2, `2` = 3, `3` = 5)
total <- lapply(hour, sum) %>% unlist

lapply - хороший инструмент для работы со списком данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...