Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- twoWay <- function(Y,k){
- NPOPS<-dim(X)[1]
- ID <- vector(length=NPOPS)
- ID[1:NPOPS] <- c(as.matrix(row.names(X)))
- X <- X[,1:25]
- if (length(Y)==1)
- Y <- X[which(ID==Y),]
- YDIST<-vector(length=NPOPS+NPOPS*(NPOPS-1)/2)
- XDIST <- as.matrix(dist(X))
- for (i in 1:NPOPS)
- YDIST[i] <- sqrt(sum((Y-X[i,])^2))
- ID2 <- vector()
- YDIST2 <- vector()
- COUNT <- NPOPS
- for (i in 1:(NPOPS-1))
- for (j in (i+1):NPOPS) {
- COUNT<-COUNT+1
- if (abs(YDIST[i]-YDIST[j])<XDIST[i,j] & YDIST[i]>0 & YDIST[j]>0) {
- FRAC <- (XDIST[i,j]^2+YDIST[i]^2-YDIST[j]^2)/(2*XDIST[i,j]^2)
- if (FRAC>=0 & FRAC<=1) {
- YDIST2[COUNT] <- sqrt(YDIST[i]^2-FRAC^2*XDIST[i,j]^2)
- ID2[COUNT] <- paste(round(100*(1-FRAC),1),"% ",ID[i]," + ",round(100*FRAC,1),"% ",ID[j],sep=" ")
- }
- else
- YDIST2[COUNT]<- 100
- }
- else
- YDIST2[COUNT]<- 100
- }
- ORDER<-order(YDIST2)
- ORDER<-cbind(ID2[ORDER[1:k]],round(YDIST2[ORDER[1:k]],4))
- print(ORDER)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement