廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

R: 頻度順でソート

ベクトル要素を各要素の出現頻度順にならべかえてくれる関数ってないんですか。
tableで集計してからsortすればいいんだけど、なんかもっと上手いやり方がありそうな気がする。

freqsort <- function(x, replace = FALSE){
    tab1 <- table(x)  #tableで集計してから
    tab1 <- sort(tab1, decreasing=TRUE)  #sort
    res1 <- names(tab1)
    if(is.numeric(x)){res1 <- as.numeric(res1)}
    if(replace == TRUE){rep(res1,tab1)}else{return(res1)}
}


> x<- sample(letters[1:4], 6, TRUE)
> x
[1] "c" "b" "d" "b" "b" "a"
> freqsort(x,TRUE)
[1] "b" "b" "b" "a" "c" "d"
> freqsort(x)  #重複除く
[1] "b" "a" "c" "d"