# un po' di coppie di dati
dati <- c(
  0.43933983,-0.56066017,
 -0.56066017,0.53933983,
  1.00391632,-0.17670853,
 -0.27670853,1.10391632,
  1.48786797,0.18786797,
  0.08786797,1.58786797,
  1.91213203,0.61213203,
  0.51213203,2.01213203,
  2.27670853,1.09608368,
  0.99608368,2.37670853,
  2.56066017,1.66066017,
  1.56066017,2.66066017 )
# controllo quante sono
length(dati)/2
 [1] 10
# le metto in una matrice a 10 righe e 2 colonne; ricordo che i dati di una
# matrice in R vanno messi colonna per colonna; quindi li metto in una matrice
# 2*10 e poi ne prendo la trasposta; in alternativa potrei introdurre i dati
# diversamente: 0.43933983,-0.56066017,1.00391632,... e metterli direttamente
# in una matrice 10*2
h <- array(dati,dim=c(2,12)); k <- t(h); k
             [,1]       [,2]
 [1,]  0.43933983 -0.5606602
 [2,] -0.56066017  0.5393398
 [3,]  1.00391632 -0.1767085
 [4,] -0.27670853  1.1039163
 [5,]  1.48786797  0.1878680
 [6,]  0.08786797  1.5878680
 [7,]  1.91213203  0.6121320
 [8,]  0.51213203  2.0121320
 [9,]  2.27670853  1.0960837
[10,]  0.99608368  2.3767085
[11,]  2.56066017  1.6606602
[12,]  1.56066017  2.6606602
c( min(k[,1]), max(k[,1]), min(k[,2]), max(k[,2]) )
[1] -0.5606602  2.5606602 -0.5606602  2.6606602
# rappresento i punti nello spazio [-1,3]*[-1,3]
plot(c(-1,3),c(-1,3),type="n",xlab="", ylab="", asp=1)
abline(v=axTicks(1), h=axTicks(2), col="blue",lty=3)
abline(h=0,v=0,lty=2,col="blue")
points(k)
# il punto avente per coordinate le medie di quelle dei punti dati:
xm <- mean(k[,1]); ym <- mean(k[,2])
points(xm,ym,pch=20)

# la retta di regressione y in funz. di x (la rappresento tratteggiata)
mod = lm(k[,2] ~ k[,1]); mod$coefficients; abline(mod$coefficients,lty=3)
(Intercept)      k[, 1] 
 0.74161831  0.06845607

# determino gli assi principali, i cui versori sono stampati col comando 
# prcomp ("componenti principali"): PC1 e PC2; devo aggiungere le coordinate
# del baricentro.
prcomp(k)
Standard deviations:
[1] 1.0890278 0.8282839
Rotation:
           PC1        PC2
[1,] 0.9866664  0.1627557
[2,] 0.1627557 -0.9866664
prcomp(k)$rotation
           PC1        PC2
[1,] 0.9866664  0.1627557
[2,] 0.1627557 -0.9866664
pc <- prcomp(k)$rotation
princ1 <- function(x) (x-xm)*pc[1,1]/pc[1,2]+ym
princ2 <- function(x) (x-xm)*pc[2,1]/pc[2,2]+ym
# quindi li traccio:
curve(princ1,add=TRUE,col="blue")
curve(princ2,add=TRUE,col="red")