在R中如何对R6对象数组进行排序

在R中如何对R6对象数组进行排序,r,r6,R,R6,如何根据自己的函数值或比较函数值对R6对象进行排序/排序 我用矩形做了一个小例子,我想按它们的面积排序: library('R6') Rectangle <- R6Class( "Rectangle", public = list( initialize = function(width, height) { private$width = width private$height = height }, get_area = fu

如何根据自己的函数值或比较函数值对R6对象进行排序/排序

我用矩形做了一个小例子,我想按它们的面积排序:

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))
但是没有运气(我得到一条
'x'必须是原子的
错误消息)

我尝试不使用
[[1]]
(像这样
e1$get_area()
)但这也不起作用

四处搜索,但没有找到任何能让我找到解决方案的线索

有什么建议吗?提前谢谢

嗯,灵感来自

我发现了下面这个漂亮而优雅的解决方案

area = function(rect){ rect$get_area() }
sorted_rects = array_of_rects[ order( sapply(array_of_rects, FUN = area) ) ]
在一天结束时,与R6一起工作,就像与任何其他类/对象一起工作一样

area = function(rect){ rect$get_area() }
sorted_rects = array_of_rects[ order( sapply(array_of_rects, FUN = area) ) ]