我对R很新,所以这是一个我遇到问题的问题。
我目前正在使用第一次迭代到第45次的马尔可夫链。我需要在这样的函数中使用后续的n和n + 1迭代:
bk<-function(n)((B[(n+1)]-B[n])/(B[n]-0.1818182))
然而,我需要它,它只计算它,使N只是一个整数。我尝试使用for循环,但它似乎无法正常工作。
for (n in 0:45){
bk<-function(n)(B[(n+1)]-B[n])/(B[n]-0.1818182)
if(bk=0)
next
print(bk)
}
for循环告诉我“}”中的“错误:意外'}'
(我想要的是计算N的函数,IFF N是一个整数。当N不是整数时,结果值为0,这就是我使用for循环来消除这些值的原因)
这就是B
B
[1] 1.0000000 0.8000000 0.6600000 0.5560000 0.4764000 0.4145600 0.3661360 0.3280400 0.2979758 0.2741956 0.2553518
[12] 0.2403975 0.2285151 0.2190636 0.2115391 0.2055441 0.2007647 0.1969524 0.1939101 0.1914812 0.1895416 0.1879922
[23] 0.1867542 0.1857649 0.1849741 0.1843419 0.1838365 0.1834324 0.1831093 0.1828509 0.1826442 0.1824789 0.1823467
[34] 0.1822409 0.1821564 0.1820887 0.1820346 0.1819913 0.1819567 0.1819290 0.1819068 0.1818891 0.1818749 0.1818636
[45] 0.1818545 0.1818472
>
##Where B Comes from
B<-c(intialstate1[,2])
马尔可夫链是使用马尔可夫链包装制作的
MCMolFrac<-new("markovchain",
states=c("B","C","D","E"),
transitionMatrix=matrix(data=c(0.8,0.2,0,0,0.1,0.6,0.2,0.1,0,0.2,0.8,0,0,0.4,0,0.6),byrow =TRUE,ncol=4),
name= "Unimolecular Reaction Distribution")
initialstate<-c(1,0,0,0)
fvals<-function(mchain,initialstate,n) {
out<-data.frame()
names(initialstate)<-names(mchain)
for (i in 0:n)
{
iteration<-initialstate*mchain^(i)
out<-rbind(out,iteration)
}
t<-cbind(out, i=seq(0,n))
out<-out[,c(4,1:3)]
return(out)
}
intialstate1<-data.frame(fvals(mchain = MCMolFrac, initialstate= c(1,0,0,0),n=45))
##leadingtoVectorBformationAbove
基本上,我需要创建一个离散的时间动态系统。这样我就可以将输出变成矩阵/向量,这样我就可以将其绘制成类似
的图形Graph of Final Product, the different colours are different datasets
谢谢