J'ai pensé demander aux experts - désolé, c'est plus une question de revue de code, mais je la complète ci-dessous. Le code suivant est-il correct pour obtenir les top_n cas les plus proches de la première ligne - en ignorant la première ligne :
example_df <- data.frame(
gender = c("male", "male", "female", "male")
, age = c(30, 30.1, 20, 31)
)
example_df
gower_dist <- as.matrix(daisy(example_df, metric = "gower"))
gower_dist
top_n <- 2
# select top 2 closest row indices of row 1
example_df[head(order(gower_dist[-1, 1]), top_n) + 1,]
J'ai essayé de faire fonctionner ce système pour la troisième rangée également, mais cela ne fonctionne pas :
example_df[head(order(gower_dist[-3, 3]), top_n) + 1,]
Tout retour d'information serait très apprécié. Merci de votre compréhension.
PS :
la métrique de la distance :
1 2 3 4
1 0.000000000 0.004545455 0.9545455 0.04545455
2 0.004545455 0.000000000 0.9590909 0.04090909
3 0.954545455 0.959090909 0.0000000 1.00000000
4 0.045454545 0.040909091 1.0000000 0.00000000