Ich bin auf der Suche nach einer allgemeinen Priorität Warteschlange in R
. Hat R eine universelle Prioritätswarteschlangenimplementierung (Paket) wie Java PriorityQueue
Klasse oder Python heapq
?Hat R eine Prioritätswarteschlange wie Java's PriorityQueue?
Antwort
Sie könnten wahrscheinlich das schaffen ganz einfach selbst, entweder Klassen (Referenz Klassen passen am besten) oder ein data.frame
mit einem benutzerdefinierten Typ verwenden, mit einigen Funktionen kombiniert, die auf ihn arbeiten (add_to_queue(element, queue_object, priority)
, get_item(queue_object)
). Diese Funktionen wären die Methoden für die Referenzklasse. Ich mag die Referenzklassenlösung besser, da sie sowohl den Zustand als auch die Logik an einem Ort speichert.
Sie können folgende implementation from Rosetta Code, verwenden aber das Einsetzen Vorsicht nimmt O (n log 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)
}
Ich ging weiter und eine grundlegende Warteschlange als R Referenzklasse implementiert. Die Details finden Sie unter here. Es wurde um eine Prioritätswarteschlange erweitert, wie in der Dokumentation here dokumentiert.
Die grundlegenden und prioritären Warteschlangenimplementierungen sind jetzt als liqueueR-Paket auf CRAN verfügbar, mit einer Entwicklungsversion unter GitHub.
- 1. Eine Java PriorityQueue zu einer stabilen Prioritätswarteschlange machen
- 2. PriorityQueue hat Objekte mit derselben Priorität
- 3. ändern Priorityqueue bis max Priorityqueue
- 4. Java-Prioritätswarteschlange
- 5. java priorityQueue Update-Problem
- 6. Eine Prioritätswarteschlange gibt Fehler in Java
- 7. Hat Clojure ein Äquivalent von Javas Importpaket? *?
- 8. Scala sortierte Prioritätswarteschlange, die immer die niedrigste Nummer als Kopf hat, aufsteigende Reihenfolge
- 9. Wie sollte ich eine Prioritätswarteschlange richtig durchlaufen?
- 10. Hat R eine Funktion "predict.glmList"?
- 11. PriorityQueue Umfrage
- 12. In Java, was sollte ich für eine PriorityQueue verwenden, die zuerst das größte Element zurückgibt?
- 13. Prioritätswarteschlange mit höherer Priorität zuerst in Python
- 14. Servicestack Interne Priorisierung in RedisMQ PriorityQueue
- 15. Prioritätswarteschlange für HashMap-Objekt in Java
- 16. Elemente aus der Prioritätswarteschlange auswählen, die den Kriterien entsprechen
- 17. PriorityQueue/Heap-Update
- 18. Pairwise Prioritätswarteschlange
- 19. Java PriorityQueue und Comparator nicht korrekt sortiert
- 20. CUDA on Thrust: Wie prioritätswarteschlange
- 21. Gibt es in Scala eine unveränderbare Prioritätswarteschlange?
- 22. Wie implementiert man eine generische PriorityQueue mit grundlegenden Methoden in Java?
- 23. Python PriorityQueue Auftrag
- 24. Javas varargs Leistung
- 25. Einfache Prioritätswarteschlange in Java
- 26. Javas Checkstyle, MagicNumberCheck
- 27. Javas instanceof ungerades Verhalten
- 28. Liste zur Prioritätswarteschlange
- 29. Hat R eine assert-Anweisung wie in Python?
- 30. Wie behalte ich eine große Prioritätswarteschlange mit den relevantesten Elementen?
http://en.wikipedia.org/wiki/Priority_queue für das Hintergrundlesen für den Fall, dass jemand es implementieren möchte – Spacedman
Sieht nicht nach viel Arbeit aus, und es sieht so aus, als könnte es Spaß machen. Schade, dass ich heute nach Ikea muss ...;) –
Ich erinnere mich, dass ich so etwas mit Rredis gemacht habe, das nur eine Stunde oder so dauerte, um es zusammen zu werfen. – Hansi