2013-04-26 100 views
1
`function(trans,initprob,N)' 
{ 
    BrokerPosition <- c("BP", "IP", "SP") 
    mysequence <- character() 
    firstposition <- sample(BrokerPosition, 1, rep=TRUE, prob=initprob) 
    mysequence[1] <- firstposition 

    for (i in 2:N) { 
    prevposition <- mysequence[i-1] 
    probabilities <- trans[prevposition,] 
    BPosition <- sample(BrokerPosition, 1, rep=TRUE, prob=probabilities) 
    mysequence[i] <- BPosition 
    } 

return(mysequence) 
} 

这是一个由模拟马尔可夫链的功能,但每当我运行它,我得到的错误数组没有“dimnames”属性,任何想法,为什么是发生这种情况错误:试图分配给数组时没有“dimnames”属性

回答

2

你的数组'mysequence'是字符,所以R试图找到与rowname匹配mysequence [i-1]的行。如果你没有在'trans'上设置rownames,这会抛出你的错误。可以使用整数值从trans中选择一行,也可以使用trans来设置rownames,具体取决于您实际尝试执行的操作。

+0

嗨它确实解决了第一个错误,但现在我有另一个错误样本错误(BrokerPosition,1,rep = TRUE,prob = probabilities): 错误的概率数量..my矩阵是一个9 * 3矩阵 – 2013-04-26 19:33:34

+0

'概率“应该是描述BrokerPosition中的元素将被采样的概率的长度为3的数字向量。既然'BrokerPosition'中有3个元素,'probabilities'中需要3个元素 – 2013-04-26 21:02:16

相关问题