0

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

  1. 取变换矩阵、初始向量和变换次数
  2. 计算结果向量并将它们堆叠在数据框中
  3. 绘制数据框变量并返回数据框

这是我的功能:

###### 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]
4

1 回答 1

0

你的函数有一行:

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

这设置initvec为一个空向量,即覆盖您传递的参数。

于 2013-11-05T09:26:30.233 回答