R循环马尔可夫矩阵变换不起作用

时间:2013-11-05 09:11:34

标签: r

我有这个简短的功能应该:

  1. 获取转换矩阵,初始向量和转换次数
  2. 计算结果向量并将它们堆叠在数据框中
  3. 绘制数据框变量并返回数据框
  4. 这是我的功能:

    ###### initvec _ initial vector
    ###### matrv _ transformation matrix
    ###### ns _ number of simulations
    markovforplot<-function(initvec,matrv,ns) {
      ns <- as.integer(ns)
      initvec <- c()
      exposant <- c(1:ns)
    
      for (i in 1:ns) {
        library(expm)
        toprint<-apply((matrv %^% i)*initvec,2,sum)
        dataf <- data.frame(exposant=exposant,toprint=toprint)
        plot(dataf$exposant, dataf$toprint, type="l")
      }
      return(dataf)
    }
    

    使用格式正确的矩阵和向量进行测试时

    (markovforplot(initvec=initvec,matrv=m,ns=20) 
    

    返回的错误是:

    Error in apply((matrv %^% i) * initvec, 2, sum) : 
      dims [product 16] do not match the length of object [0]
    

1 个答案:

答案 0 :(得分:0)

您的功能有以下几行:

R> initvec <- c()
R> initvec
NULL

这会将initvec设置为空向量,即超过您传递的参数。