【问题标题】:Program simple simulation in R用 R 编写简单的模拟程序
【发布时间】:2013-12-16 17:35:23
【问题描述】:

根据@agstudy 编辑这篇文章以进行简化

我正在尝试开发一个使用随机均匀分布来模拟聚合物的模型。

模型有两种状态

状态 1(如果在状态 2 中,状态 1 的概率为 0.003): 增长概率,A = .01 收缩概率,B = .0025

状态 2(如果在状态 1 中,状态 2 的概率是 0.0003): 增长概率,A = .01 收缩概率,E = .05

模拟从状态 1 开始

在状态 1 中,从 data.frame1 中采样随机数,如果 #

如果# = .003,如果 #

我希望@agstudy 可以解决这个问题,但它可能不会……抱歉,如果是这样的话。

这是一个在 excel 中生成的示例,说明小集合的外观

第一列来自data.frame1,输入列是data.frame2,出于解释目的,我包括了状态和长度列。

    rnumbers  state input length
    0           1   0   0 # initialized state
    0.009413895 1   1   1
    0.052959306 1   1   2
    0.002453354 1   -1  1
    0.000290324 2   -1  0
    0.093312954 2   0   0
    0.077210941 2   0   0
    0.04924944  2   -1  -1
    0.010590107 2   -1  -2
    0.03308292  2   -1  -3
    0.037239807 2   -1  -4
    0.007889393 2   -1  -5
    0.026476751 2   -1  -6
    0.000454509 1   1   -5
    0.009820683 1   1   -4
    0.019836999 1   1   -3
    0.009380381 1   1   -2
    0.083149383 1   1   -1
    0.022212547 1   1   0
    0.051917035 1   1   1
    0.05032031  1   1   2
    0.03956718  1   1   3
    0.032664445 1   1   4
    0.004352291 1   1   5
    0.08902418  1   1   6
    0.095643962 1   1   7

【问题讨论】:

  • 如果rnum[i] == C怎么办?
  • 好点,把 rnum[i] > C 当作 rnum[i] >= C
  • 你注意到了吗,因为C < Drnum[i] < C 总是TRUE 如果rnum[i] < D
  • 当满足条件 rnum[i]

标签: r loops repeat random-sample control-structure


【解决方案1】:

我会这样写:

step_generator <- function(rnum)
   ifelse(rnum<C,
       ifelse(rnum>=D,-5,ifelse(rnum<B,-1,ifelse(rnum<A,1,0))),
       ifelse(rnum<B,-1,ifelse(rnum<A,1,0)))

【讨论】:

  • 这段代码如何考虑前面的行?当 rnum=D 时,您能解释一下您的代码在哪里执行此操作吗?
  • @user2813055 我想我错过了什么。您应该提供具有预期输出的可重现示例。请阅读this
猜你喜欢
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
相关资源
最近更新 更多