library(tidyverse) voistlejad=read_csv("http://minitorn.tlu.ee/~jaagup/kool/java/kursused/19/r/naited/1031/spordipaev_andmed.csv"); v_norm=voistlejad %>% mutate_if(is.numeric, function(tulp){(tulp-min(tulp))/(max(tulp)-min(tulp))}) v_norm asukohad=tibble(isik=v_norm$isik, x=0, y=0) nurgad=sapply(1:nrow(v_norm), function(nr) {nr*2*pi/nrow(v_norm)}) asukohad$x=cos(nurgad) asukohad$y=sin(nurgad) asukohad %>% ggplot(aes(x, y, label=isik)) + geom_text() spordikaugus<- function(nr1, nr2){ andmed1=slice(v_norm %>% select(-isik), nr1) %>% unlist(., use.names = FALSE) andmed2=slice(v_norm %>% select(-isik), nr2) %>% unlist(., use.names = FALSE) vahed=andmed2-andmed1 return (sqrt(sum(vahed ** 2))) } joonisekaugus<- function(nr1, nr2){ andmed1=slice(asukohad %>% select(-isik), nr1) %>% unlist(., use.names = FALSE) andmed2=slice(asukohad %>% select(-isik), nr2) %>% unlist(., use.names = FALSE) vahed=andmed2-andmed1 return (sqrt(sum(vahed ** 2))) } nihuta<- function(nr1, nr2, vahe){ andmed1=slice(asukohad %>% select(-isik), nr1) %>% unlist(., use.names = FALSE) andmed2=slice(asukohad %>% select(-isik), nr2) %>% unlist(., use.names = FALSE) vahed=andmed2-andmed1 andmed1=andmed1+vahe*vahed*0.1 asukohad[nr1, "x"] <<- andmed1[1] asukohad[nr1, "y"] <<- andmed1[2] } paigutaPaar<- function(nr1, nr2){ #esimest teise suhtes vahe=joonisekaugus(nr1, nr2)-spordikaugus(nr1, nr2) print(vahe) nihuta(nr1, nr2, vahe) } paigutaIsik <- function(nr1){ for(nr in 1:nrow(asukohad)){ if(nr!=nr1){ paigutaPaar(nr1, nr) } } } paigutaIsikud <- function(){ for(nr in 1:nrow(asukohad)){ paigutaIsik(nr) } } paigutaIsikud() asukohad %>% ggplot(aes(x, y, label=isik)) + geom_text() #Esitage tulemus animeeritud gif-ina