J'ai deux dataframes,
Code : Tout sélectionner
#j'ai deux dataframes avec des distances et depths en metre
data1 <- data.frame(distance <- rbind(0,2,4,5,7,9,12),
depth <-rbind(1.2,2.9,5.8,6.9,4.3,3.1,0.5),
valeur <- rbind(14,23,17,45,26,59,22)
)
colnames(data1)<- c("distance","depth","valeur")
data1
samples <- data.frame(distance2 <- rbind(0,1,6,6,8),
depth2 <- rbind(0,1.3,2.5,4,2),
conc <- rbind(0.12, 0.10,0.9, 0.7,0.5)
)
rownames(samples)=c("V0","V1-1","V2-1","V2-2","V3")
samples
Je mesure la distance entre chaque echantillon "samples" et chaque valeur de data1avec cette boucle
Code : Tout sélectionner
out <- matrix(nrow=7,ncol=5) #Le résultat de ma boucle
for (i in 1:nrow(data1)){
for (k in 1:nrow(samples)){ # for each sample
ddistance = samples[k, 1] - distance[i] # distance entre chaque position et la position de mon sample
ddepth = samples[k, 2] - depth[i] # depth entre chaque position et la position de mon sample
d = sqrt(ddistance^2+ddepth^2) # distance en metre entre chaque sample et chaque valeur de data1
out[i,k]=d
}
}
colnames(out)=c("V0","V1-1","V2-1","V2-2","V3")
out
Pour chaque valeur de mon data1 je cherche la valeur minimale de distance aux samples (l'échantillon le plus proche)
Je le récupère avec cette boucle mais je souhaiterais garder l'information du nom de la colonne.
Code : Tout sélectionner
out2 <- matrix(NA, nrow = nrow(out)) # taille du fichier de sortie
for (l in 1:nrow(out)){ # pour chaque ligne de out
minimumd=min(out[l,]) #je vais chercher le minimum
out2[l,]=minimumd # je l'ecris dans le fichier de sortie
}
out2
en fait je voudrais un resultat de ce type :
- 1,004988 V0
1,886796 V1-1
2,690725 V2-2
3,067572 V2-2
1,044031 V2-2
1,486607 V3
4,272002 V3
J'obtiens bien ma distance minimale mais je voudrais garder l'information du nom de colonne. Il est sans doute possible de tout faire plus rapidement/simplement.
Si vous avez des suggestions pour m'aider à avancer et associer ce nom de colonne.
merci d'avance