我想把公式变成R代码,但是第二项一直出错,请大家帮我看看该怎么改。

我想把公式变成R代码,但是第二项一直出错,请大家帮我看看该怎么改。

img

CD=function(x){  ##### x表示输入的设计矩阵#####
n=nrow(x)
m=ncol(x)

f=array(0,dim=c(n,1))
for(i in 1:n)
       {
       
       u=array(0,dim=c(1,m))
       for(j in 1:m)
          {
          
          u[1,j]=1+(1/2)*((x[i,j]-0.5)^2)^(1/2)-(1/2)*(x[i,j]-0.5)^2
          
          }
          
         j=1
         f[i,1]=1
         while(j<=m) {
                     f[i,1]=f[i,1]*u[1,j]
                     i=i+1
                     }
                     
    
        }        
    
g=array(0,dim=c(n,n))
for(i in 1:n)
    {for(k in 1:n)
       {
        
         v=array(0,dim=c(1,m))
         for(j in 1:m)
        {
             
             v[1,j]=1+(1/2)*((x[i,j]-0.5)^2)^(1/2)+(1/2)*((x[k,j]-0.5)^2)^(1/2)-(1/2)*((x[i,j]-x[k,j])^2)^(1/2) 
          
            }
        
         j=1
         g[i,k]=1
         while(j<=m) {
                     g[i,k]=g[i,k]*v[1,j]
                     j=j+1
                     }
             
        }
    }
    
CD=(13/12)^m-(1/n)*sum(f)+(1/n^2)*sum(g)
CD
}

d=matrix(c( 
0,1,1,1,0,1,0,1,0,0,1,1,1,1,0,1, 
1,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0, 
1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, 
1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1, 
0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1, 
1,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1, 
1,0,0,0,1,0,1,0,1,1,0,0,1,0,0,0, 
1,0,0,1,0,1,1,0,1,0,1,0,0,0,1,0
),ncol=16,nrow=8,byrow=T)
CD(d)

你把代码发过来我看看