我一直在研究R中的模拟问题。问题是
一名矿工被困在矿井中,他有3扇门可供选择。
门1=他可以从矿井里出来,需要2小时,
Door2 =他将在3小时内旅行,但只会返回矿井,
Door3 =与第2门相同的情况,但5小时。
我已经创建了一个随机数生成器,如果它得到1(使用will循环),它将停止,但是我的问题是如何重复100次,并将结果放在一个表列中。做这样的问题有没有更简单的解决办法?(这里是初学者)
这是我的密码
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发布于 2018-08-29 17:03:32
n的意思是门的数目。如果门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之后,我建议您不要将列表转换为dataframe,因为每次试验的长度是不同的。它将使用dataframe生成许多NA值。
library(dplyr)
hour <- lapply(storage, recode, `1` = 2, `2` = 3, `3` = 5)
total <- lapply(hour, sum) %>% unlistlapply是处理列表数据的好工具。
https://stackoverflow.com/questions/52081901
复制相似问题