Skip to content
Prev 320326 / 398506 Next

Distance calculation

HI,
I am not sure about the error.? I modified the script and added 12 (hopefully all the locations) and didn't had any problems.

dat1<- read.csv("rate.csv",sep=",")

res<- do.call(cbind,lapply(seq_len(nrow(dat1)),function(i) do.call(rbind,lapply(split(rbind(dat1[i,],dat1[-i,]),1:nrow(rbind(dat1[i,],dat1[-i,]))), function(x) {x1<-rbind(dat1[i,],x);colnames(x1)<-gsub("[.]","",colnames(x1));
?if({indx<- colSums(x1[,2:5]==0);indx[1]==0 & indx[2]==0 & indx[3]==1 & indx[4]==2}) #3 peaks 2 peak comparison
?{x2<- x1[order(x1$Peak3t,x1$Npeak3t),];
?with(x2,{abs((Peak1v[1]-Peak1v[2])*(Peak1t[1]-Peak1t[2]))+ abs((Peak2v[1]-Peak2v[2])*(Peak2t[1]-Peak2t[2]))+abs((Peak1v[1]-Peak3v[2])*((Peak1t[1]+12)-Peak3t[2]))+
abs((Npeak1v[1]-Npeak1v[2])*(Npeak1t[1]-Npeak1t[2]))+ abs((Npeak2v[1]-Npeak2v[2])*(Npeak2t[1]-Npeak2t[2]))+abs((Npeak1v[1]-Npeak3v[2])*((Npeak1t[1]+12)-Npeak3t[2]))})
}
else if({indx[1]==0 & indx[2]==0 & indx[3]==1 & indx[4]==1}) #4 peaks 2 peak comparison. Peak3 Peak4 value compared with Peak1
{x4<- x1[order(x1$Peak3t,x1$Peak4t,x1$Npeak3t,x1$Npeak4t),];
with(x4,{abs((Peak1v[1]-Peak1v[2])*(Peak1t[1]-Peak1t[2]))+ abs((Peak2v[1]-Peak2v[2])*(Peak2t[1]-Peak2t[2]))+ abs((Peak1v[1]-Peak3v[2])*((Peak1t[1]+12)-Peak3t[2]))+abs((Peak2v[1]-Peak4v[2])*((Peak2t[1]+12+12)-Peak4t[2]))+ abs((Npeak1v[1]-Npeak1v[2])*(Npeak1t[1]-Npeak1t[2]))+ abs((Npeak2v[1]-Npeak2v[2])*(Npeak2t[1]-Npeak2t[2]))+ abs((Npeak1v[1]-Npeak3v[2])*((Npeak1t[1]+12)-Npeak3t[2]))+abs((Npeak2v[1]-Npeak4v[2])*((Npeak2t[1]+12+12)-Npeak4t[2])) })
}
else if({indx[1]==0 & indx[2]==1 & indx[3]==2 & indx[4]==2}) #2 peaks 1 peak comparison
{x5<- x1[order(x1$Peak2t,x1$Npeak2t),];
with(x5,{abs((Peak1v[1]-Peak1v[2])*(Peak1t[1]-Peak1t[2]))+abs((Peak1v[1]-Peak2v[2])*((Peak1t[1]+12)-Peak2t[2]))+ abs((Npeak1v[1]-Npeak1v[2])*(Npeak1t[1]-Npeak1t[2]))+abs((Npeak1v[1]-Npeak2v[2])*((Npeak1t[1]+12)-Npeak2t[2])) })

}

else if({indx[1]==0 & indx[2]==1 & indx[3]==1 & indx[4]==2 }) #3 peak 1 peak comparison
{x6<- x1[order(x1$Peak2t,x1$Peak3t,x1$Npeak2t,x1$Npeak3t),];
with(x6,{abs((Peak1v[1]-Peak1v[2])*(Peak1t[1]-Peak1t[2]))+ abs((Peak1v[1]-Peak2v[2])*((Peak1t[1]+12)-Peak2t[2]))+ abs((Peak1v[1]-Peak3v[2])*((Peak1t[1]+12+12)-Peak3t[2])) + abs((Npeak1v[1]-Npeak1v[2])*(Npeak1t[1]-Npeak1t[2]))+ abs((Npeak1v[1]-Npeak2v[2])*((Npeak1t[1]+12)-Npeak2t[2]))+ abs((Npeak1v[1]-Npeak3v[2])*((Npeak1t[1]+12+12)-Npeak3t[2])) })
}
else if({indx[1]==0 & indx[2]==0 & indx[3]==0 & indx[4]==1}) # 4 peak 3 peak comparison
{x7<- x1[order(x1$Peak4t,x1$Npeak4t),];
with(x7,{abs((Peak1v[1]-Peak1v[2])*(Peak1t[1]-Peak1t[2]))+abs((Peak2v[1]-Peak2v[2])*(Peak2t[1]-Peak2t[2]))+abs((Peak3v[1]-Peak3v[2])*(Peak3t[1]-Peak3t[2]))+ abs((Peak1v[1]-Peak4v[2])*((Peak1t[1]+12)-Peak4t[2]))+ abs((Npeak1v[1]-Npeak1v[2])*(Npeak1t[1]-Npeak1t[2]))+abs((Npeak2v[1]-Npeak2v[2])*(Npeak2t[1]-Npeak2t[2]))+abs((Npeak3v[1]-Npeak3v[2])*(Npeak3t[1]-Npeak3t[2]))+ abs((Npeak1v[1]-Npeak4v[2])*((Npeak1t[1]+12)-Npeak4t[2])) })

}
else if({indx[1]==0 & indx[2]==1 & indx[3]==1 & indx[4]==1}) #4 peak 1 peak comparison
{x8<- x1[order(x1$Peak2t,x1$Peak3t,x1$Peak4t,x1$Npeak2t,x1$Npeak3t,x1$Npeak4t),];
with(x8,{abs((Peak1v[1]-Peak1v[2])*(Peak1t[1]-Peak1t[2]))+ abs((Peak1v[1]-Peak2v[2])*((Peak1t[1]+12)-Peak2t[2]))+ abs((Peak1v[1]-Peak3v[2])*((Peak1t[1]+12+12)-Peak3t[2]))+abs((Peak1v[1]-Peak4v[2])*((Peak1t[1]+12+12+12)-Peak4t[2]))+ abs((Npeak1v[1]-Npeak1v[2])*(Npeak1t[1]-Npeak1t[2]))+ abs((Npeak1v[1]-Npeak2v[2])*((Npeak1t[1]+12)-Npeak2t[2]))+ abs((Npeak1v[1]-Npeak3v[2])*((Npeak1t[1]+12+12)-Npeak3t[2]))+abs((Npeak1v[1]-Npeak4v[2])*((Npeak1t[1]+12+12+12)-Npeak4t[2]))})

}
else ({ #cases where peaks are similar
with(x1,{abs((Peak1v[1]-Peak1v[2])*(Peak1t[1]-Peak1t[2]))+abs((Peak2v[1]-Peak2v[2])*(Peak2t[1]-Peak2t[2]))+abs((Peak3v[1]-Peak3v[2])*(Peak3t[1]-Peak3t[2]))+abs((Peak4v[1]-Peak4v[2])*(Peak4t[1]-Peak4t[2]))+ abs((Npeak1v[1]-Npeak1v[2])*(Npeak1t[1]-Npeak1t[2]))+abs((Npeak2v[1]-Npeak2v[2])*(Npeak2t[1]-Npeak2t[2]))+abs((Npeak3v[1]-Npeak3v[2])*(Npeak3t[1]-Npeak3t[2]))+abs((Npeak4v[1]-Npeak4v[2])*(Npeak4t[1]-Npeak4t[2])) })
})

}))))
res2<-do.call(cbind,lapply(seq_len(ncol(res)),function(i) c(c(tail(res[seq(1,i,1),i],-1),0),res[-c(1:i),i])))
row.names(res2)<-1:nrow(res2)

?res2[1:5,1:5]
#????? [,1]???? [,2]???? [,3]???? [,4]??? [,5]
#1?? 0.0000?? 0.0000?? 0.0000 857.6834?? 0.000
#2?? 0.0000?? 0.0000?? 0.0000 611.1167?? 0.000
#3?? 0.0000?? 0.0000?? 0.0000 854.3765?? 0.000
#4 857.6834 611.1167 854.3765?? 0.0000 579.756
#5?? 0.0000?? 0.0000?? 0.0000 579.7560?? 0.000


A.K.