做个BT model/cox ph model就好了,前台的显示模式可以用矩阵嘛,比如我写了个粗浅的例子,需要自己鼠标点的:
<br />
library(gridExtra)<br />
mat<- matrix(as.character(matrix(rep('0:0',100),10)),10)<br />
diag(mat)<-''<br />
row.names(mat)<- LETTERS[1:10] ## modify here<br />
f<-function(mat){<br />
plot(1:10,type='n')<br />
par(new=T);<br />
mat1<- as.data.frame(mat)<br />
names(mat1)<- LETTERS[1:10]; ## modify here<br />
grid.table(mat1);<br />
}</p>
<p>f(mat);</p>
<p>paste.1<-function(x){<br />
return (paste(x[1],x[2],sep=':'));<br />
}</p>
<p>c( 2.121485 , 7.744767 )->lu<br />
c( 8.590236 , 7.764389 )->ru<br />
c( 8.590236 , 2.34869 ) ->rl<br />
c( 2.209375 , 2.368312 )->ll</p>
<p>Xsep <- seq(lu[1],ru[1],length.out=11);<br />
Ysep <- seq(lu[2],ll[2],length.out=11);</p>
<p>repeat{<br />
l<-locator(1);<br />
x<-l$x<br />
y<-l$y;<br />
X<- (1:11)[(Xsep-x)>0][1]-1<br />
Y<- (1:11)[(Ysep-y)<0][1]-1<br />
if (x>9||x<2) break;<br />
if (y>9||y<2) break;<br />
if (X<0 || Y<0) break;<br />
if (X>11 || Y>11) break;<br />
as.double(strsplit(mat[X,Y],":")[[1]])->tmp<br />
tmp[2]=tmp[2]+1;<br />
paste.1(tmp)->mat[X,Y];<br />
paste.1(c(tmp[2],tmp[1]))->mat[Y,X];<br />
#cat('(',X,',',Y,')\n');<br />
par(new=T)<br />
f(mat);<br />
}<br />
当然,足球不是两两比较的大循环。改成树或者别的啥估计没啥问题。前台UI要想好看就要自己设计...
</p>