2012-08-03 13 views
7

私はRの汎用プライオリティキューを探しています。 Rは、Java PriorityQueueクラスやPython heapqのような任意の汎用優先度キューの実装(パッケージ)を持っていますか?RにはJavaのPriorityQueueのような優先度キューがありますか?

+0

http://en.wikipedia.org/wiki/Priority_queue背景が場合に読み込むための誰もが – Spacedman

+0

は多くの仕事のようには見えませんし、それは楽しいかもしれないように見えるそれを実装する空想。あなたは私が...今日イケアに行かなければならないのが残念;)私はrredisでこのような何かをやって思い出す –

+0

は一緒に投げるために時間かそこらを取りました。 – Hansi

答えて

1

おそらく(リファレンスクラスは最高のフィット)クラスを使用して、またはそれを操作するいくつかの機能と組み合わせたカスタムタイプ、(add_to_queue(element, queue_object, priority)get_item(queue_object))でdata.frameのいずれかを使用して、非常に簡単に自分でこれを作成することができます。これらの関数は、参照クラスの場合のメソッドになります。私はそれが状態とロジックの両方を1つの場所に保存するので、参照クラスのソリューションがより好きです。

2

implementation from Rosetta Codeを使用しますが、その挿入を用心することができ、私は先に行って、Rリファレンスクラスとしての基本的なキューを実装O(nはn個のログ)

PriorityQueue <- function() { 
    keys <<- values <<- NULL 
    insert <- function(key, value) { 
    temp <- c(keys, key) 
    ord <- order(temp) 
    keys <<- temp[ord] 
    values <<- c(values, list(value))[ord] 
    } 
    pop <- function() { 
    head <- values[[1]] 
    values <<- values[-1] 
    keys <<- keys[-1] 
    return(head) 
    } 
    empty <- function() length(keys) == 0 
    list(insert = insert, pop = pop, empty = empty) 
} 
5

をとります。詳細はhereです。 hereを文書としてプライオリティキューを処理するために拡張されています。

基本キューと優先度キューの実装は、GitHubの開発バージョンで、CRANのliqueueRパッケージとして利用できるようになりました。

関連する問題