A: come trovare il valore più vicino in un vettore
È possibile utilizzare la seguente sintassi di base per trovare il valore più vicino tra gli elementi di due vettori in R:
#define cut points cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf) #for each value in vector1, find closest value in vector2 cut(vector1, breaks=cuts, labels=vector2)
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: trovare il valore più vicino in un vettore in R
Supponiamo di avere i seguenti due vettori in R:
#definevectors
vector1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
vector2 <- c(3, 5, 8, 11)
Supponiamo ora che per ogni valore nel primo vettore si voglia trovare il valore più vicino nel secondo vettore.
Possiamo usare la seguente sintassi per fare questo:
#define cut points
cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf)
#for each value in vector1, find closest value in vector2
cut(vector1, breaks=cuts, labels=vector2)
[1] 3 3 3 3 5 5 8 8 8 11
Ecco come interpretare il risultato:
- Per il primo valore di vector1 (1), il valore più vicino a vector2 è 3 .
- Per il secondo valore di vector1 (2), il valore più vicino a vector2 è 3 .
- Per il terzo valore di vector1 (3), il valore più vicino a vector2 è 3 .
- Per il quarto valore di vector1 (4), il valore più vicino a vector2 è 3 .
- Per il quinto valore di vector1 (5), il valore più vicino a vector2 è 5 .
E così via.
Nota : questo metodo presuppone che i valori del secondo vettore siano strettamente crescenti. Se non lo hai già fatto, potrebbe essere necessario prima ordinare il secondo vettore.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in R:
Come calcolare la media per gruppo in R
Come calcolare la media sulle colonne in R
Come sommare colonne specifiche in R