回复 第1楼 的 sinceow:我封装成了一个函数,用来解决你的需求
findindex=function(price,pattern){<br />
var=diff(price)<br />
f=function(x){<br />
out=deparse(substitute(x))<br />
for( i in 1:length(x)){<br />
x[i]=ifelse(x[i]>0,1,ifelse(x[i]<0,0,2))<br />
}<br />
assign(out,x,envir=parent.frame())<br />
}<br />
f(var)<br />
strvar=paste(var,collapse="")<br />
temp=gregexpr(pattern,strvar)[[1]][1]<br />
if(temp!=-1){<br />
lowbound=temp+1<br />
upbound=lowbound+nchar(pattern)-1<br />
a=NULL<br />
for(i in 1:length(lowbound)){<br />
a=list(a,price[lowbound[i]:upbound[i]])<br />
}<br />
a=a[-1]<br />
return (a)}<br />
else<br />
return ("not match!")<br />
}
用法就是比如给定一个向量price,然后你想找什么规则就输入什么方式,比如你想找连续3天升然后2天降,则
findindex(price,"11100")
1代表升,0代表降,2代表平
我的返回是找到就返回一个list,没找到就not match
最后,程序没有经过过多调试,注意![s:11]
</p>