尝试运行模拟时,'closure'类型的对象不是子集表错误

时间:2013-03-15 20:34:36

标签: r simulation

我正在尝试运行具有5个状态的概率矩阵的模拟。

N<-10 #for 10 simulations
state<-simulat(P,N,1) #P is a matrix defined earlier in my code

for(i in 1:N)
    {
        if (state[i]=='0')
        {
            time[i]<-rexp(1,Mu)
        }
        if (state[i]=='1' || state[i]=='2' || state[i]=='3')
        {
            time[i]<-rexp(1,(Mu+Lamda))
        }
        if (state[i]=='4')
        {
            time[i]<-rexp(1,Lamda)
        }
    }
Error in time[i] <- rexp(1, Mu) : 
  object of type 'closure' is not subsettable

这是格式化问题还是我错误地定义了我的状态[i]?我已经尝试将我的[]切换为(),但是它给了我一个错误,说它无法找到函数'state',即使我刚刚在上面定义了它。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

除了我的评论,这是另一个解决方案:

tiempo <- ifelse(state == '0', rexp(N,Mu), 
                 ifelse(state == '4', rexp(N,Lambda), rexp(N, Mu+Lambda)))

避免循环可能会缩短执行时间。