首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R程序模拟

R程序模拟
EN

Stack Overflow用户
提问于 2018-08-29 16:10:17
回答 1查看 79关注 0票数 1

我一直在研究R中的模拟问题。问题是

一名矿工被困在矿井中,他有3扇门可供选择。

门1=他可以从矿井里出来,需要2小时,

Door2 =他将在3小时内旅行,但只会返回矿井,

Door3 =与第2门相同的情况,但5小时。

我已经创建了一个随机数生成器,如果它得到1(使用will循环),它将停止,但是我的问题是如何重复100次,并将结果放在一个表列中。做这样的问题有没有更简单的解决办法?(这里是初学者)

这是我的密码

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-29 17:03:32

  • 将100个实验存储在一个包含100个部件的列表中
  • n的意思是门的数目。如果门1出现,输入下一个实验。
  • trial指的是实验的顺序
代码语言:javascript
复制
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值。

代码语言:javascript
复制
library(dplyr)
hour <- lapply(storage, recode, `1` = 2, `2` = 3, `3` = 5)
total <- lapply(hour, sum) %>% unlist

lapply是处理列表数据的好工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52081901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档