Rでベクトル内の連続するパタンの出現する位置を検索

Rでベクトル内のの連続するパタンの出現する位置を検索.

  • 入力例:

#ベクトル
x<-c(1,2,3,3,3,3,2,3,3,3)
#パタン
patan<-c(3,3,3)

  • 出力例:

macthing_vector(x,patan)
[1] 3 4 8

  • プログラム
x<-c(1,2,3,3,3,3,2,3,3,3)
patan<-c(3,3,3)

macthing_vector<-function(x,patan){
	patan_length<-length(patan)
	
	for(i in 1:patan_length){
		if(i==1){
			l<-which(x==patan[i])
		}else{
			z<-x[i:length(x)]
			l123<-which(z==patan[i])
			l<-intersect(l,l123)
		}
	}
	l

}

macthing_vector(x,patan)
  • 多体相関の計算への応用
patan<-c(1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,1)
p<-macthing_vector(kkkb,patan)+length(patan)
p<-p[1:(length(p)-length(patan))]
(length(which(kkkb[p]==1))+0.0)/(length(kkkb[p])+0.0)