Advertisement
Guest User

a

a guest
Jan 24th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. twoWay <- function(Y,k){
  2. NPOPS<-dim(X)[1]
  3.  
  4. ID <- vector(length=NPOPS)
  5. ID[1:NPOPS] <- c(as.matrix(row.names(X)))
  6.  
  7.  
  8. X <- X[,1:25]
  9.  
  10. if (length(Y)==1)
  11. Y <- X[which(ID==Y),]
  12.  
  13.  
  14. YDIST<-vector(length=NPOPS+NPOPS*(NPOPS-1)/2)
  15.  
  16.  
  17.  
  18.  
  19. XDIST <- as.matrix(dist(X))
  20.  
  21. for (i in 1:NPOPS)
  22. YDIST[i] <- sqrt(sum((Y-X[i,])^2))
  23.  
  24. ID2 <- vector()
  25. YDIST2 <- vector()
  26. COUNT <- NPOPS
  27.  
  28. for (i in 1:(NPOPS-1))
  29. for (j in (i+1):NPOPS) {
  30. COUNT<-COUNT+1
  31. if (abs(YDIST[i]-YDIST[j])<XDIST[i,j] & YDIST[i]>0 & YDIST[j]>0) {
  32. FRAC <- (XDIST[i,j]^2+YDIST[i]^2-YDIST[j]^2)/(2*XDIST[i,j]^2)
  33. if (FRAC>=0 & FRAC<=1) {
  34. YDIST2[COUNT] <- sqrt(YDIST[i]^2-FRAC^2*XDIST[i,j]^2)
  35. ID2[COUNT] <- paste(round(100*(1-FRAC),1),"% ",ID[i]," + ",round(100*FRAC,1),"% ",ID[j],sep=" ")
  36. }
  37. else
  38. YDIST2[COUNT]<- 100
  39. }
  40. else
  41. YDIST2[COUNT]<- 100
  42. }
  43.  
  44.  
  45. ORDER<-order(YDIST2)
  46. ORDER<-cbind(ID2[ORDER[1:k]],round(YDIST2[ORDER[1:k]],4))
  47. print(ORDER)
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement