我正在用 R 编写一个采样器,它基本上是一个大的 for 循环,对于每次迭代,我都必须计算向量中的转换次数。我有一个名为 k 的向量,其中包含零和一,向量中有 1000 个条目。
我使用了以下非常慢的代码:
#we determine the number of transitions n00,n01,n10,n11
n00=n01=n10=n11=0 #reset number of transitions between states from last time
for(j in 1:(1000-1)){
if(k[j+1]==1 && k[j]==0) {n01<-n01+1}
else { if(k[j+1]==1 && k[j]==1) {n11<-n11+1}
else { if(k[j+1]==0 && k[j]==1) {n10<-n10+1}
else{n00<-n00+1}
}
}
}
因此,每次循环进行时,变量 n00,n01,n10,n11 都会计算向量中的转换。例如,n00 计算一个 0 后跟另一个 0 的次数。依此类推……
这很慢,而且我对 R 很陌生,所以我在这里有点绝望。如果可能的话,我不明白如何使用 grep。
谢谢您的帮助