Comment trier/ordonner les objets R6 en fonction d'une valeur de fonction propre ou d'une valeur de fonction de comparaison ?
J'ai fait un petit exemple avec des rectangles que je voudrais trier par leur surface :
library('R6')
Rectangle <- R6Class(
"Rectangle",
public = list(
initialize = function(width, height) {
private$width = width
private$height = height
},
get_area = function(){
private$width*private$height
}
),
private = list(
width = NULL,
height = NULL
)
)
array_of_rects = c( Rectangle$new(7,3), Rectangle$new(5,2), Rectangle$new(3,4))
Je voudrais trier array_of_rects
par leur surface donnée par le get_area()
fonction.
J'ai essayé différentes choses comme :
`>.Rectangle` <- function(e1, e2) { e1[[1]]$get_area() > e2[[1]]$get_area() }
`==.Rectangle` <- function(e1, e2) { e1[[1]]$get_area() == e2[[1]]$get_area() }
sort(array_of_rects)
mais sans succès (j'obtiens un 'x' must be atomic
message d'erreur).
J'ai essayé sans le [[1]]
(comme ceci e1$get_area()
) mais cela n'a pas fonctionné non plus.
J'ai cherché partout, mais je n'ai rien trouvé qui me permette de trouver une solution.
Des suggestions ? Merci d'avance !