r语言上机题,关于优劣度的排序,一直等于0,快疯了

x<-matrix(sample(1:10,size=36,replace=T),6,6)
max=numeric(6)
min=numeric(6)
for(k in 1:6){
max[k]=max(x[k,])
min[k]=min(x[k,])
}
sum1=0
sum2=0
for(i in 1:6)
{
for(j in 1:6)
{
if(j==1||j==3||j==6)
{
sum1=sum1+(x[i][j]-max[i])^2
sum2=sum2+(x[i][j]-min[i])^2
}
else
{
sum1=sum1+(x[i][j]-min[i])^2
sum2=sum2+(x[i][j]-max[i])^2
}
}
js=numeric(6)
sum1=sqrt(sum1)
sum2=sqrt(sum2)
js[i]=as.double(sum2)/(sum1+sum2)
sum1=0
sum2=0
}
输出结果js全是000000,做的实验是比较无纲量化处理再比较优劣度

你前面的
max=numeric(6)
min=numeric(6)
for(k in 1:6){
max[k]=max(x[k,])
min[k]=min(x[k,])
}
已经错了,应该输出每行的最值,而这样的结果全是0。
最简单的还是apply():
max_byrow=apply(x,1,max)
min_byrow=apply(x,1,min)

最最致命的错误就是
sum1=sum1+(x[i][j]-max[i])^2
sum2=sum2+(x[i][j]-min[i])^2
写错;
js=numeric(6)放错了位置。

rm(list=ls(all=TRUE))
x<-matrix(sample(1:10,size=36,replace=T),6,6)
max=apply(x,1,max)
min=apply(x,1,min)
sum1=0
sum2=0
js=numeric(6)
for(i in 1:6)
{
  for(j in 1:6)
  {
    if(j==1||j==3||j==6)
    {
      sum1=sum1+(x[i,j]-max[i])^2
      sum2=sum2+(x[i,j]-min[i])^2
    }
    else
    {
      sum1=sum1+(x[i,j]-min[i])^2
      sum2=sum2+(x[i,j]-max[i])^2
    }
  }
  sum1=sqrt(sum1)
  sum2=sqrt(sum2)
  js[i]=as.double(sum2)/(sum1+sum2)
  sum1=0
  sum2=0
}

运行结果为:

> js
[1] 0.4739555 0.5570720 0.4613081 0.5000000 0.5000000 0.5000000