Sorting list of list of elements of a custom class in R?

后端 未结 2 860
小蘑菇
小蘑菇 2021-01-21 06:20

I have a custom class object (list of tuples). I have defined <.myclass >.myclass and ==.myclass on it as well.

Now I have a

2条回答
  •  时光取名叫无心
    2021-01-21 06:53

    I wanted to make use of internal and supposedly more efficient sort, but doesn't seem like this sort has facility to take custom comparison operator. So I ended up using implementation of quicksort to sort lists of lists at arbitrary index, assuming comparison exists between the elements at that index.

    part_qsort <- function(l, idx, low, high) {
        lst <- l
        pivot <- lst[[high]][[idx]]
        i <- low - 1
    
        for(j in low:(high-1)) {
            if ((lst[[j]][[idx]] < pivot) || (lst[[j]][[idx]] == pivot)) {
                i <- i + 1
                swap(lst[[i]],lst[[j]])
            }
        }
        swap(lst[[(i+1)]],lst[[high]])
        eval.parent(substitute(l <- lst))
        return(i+1)
    }
    
    # recursive calls to quicksort
    qsort <- function(l,idx,low,high) {
        if (low < high) {
            lst <- l
            pi <- part_qsort(lst,idx,low,high)
            qsort(lst, idx, low, pi-1)
            qsort(lst, idx, pi+1, high)
            eval.parent(substitute(l <- lst))
        }
    }
    

    Another thing to look into can be library("rlist") which seems to have a bunch of functions implemented on lists.

提交回复
热议问题