2016-05-23 4 views
0

Ich versuche, die as.Node-Funktion aus der data.tree-Bibliothek in R zu verwenden, um eine Gruppe von Medienserver-Protokolldaten als Baum zu visualisieren. Ich habe den ursprünglichen Datenrahmen nach Monat und Jahr untergliedert, so dass ich Daten für jeweils einen Monat gleichzeitig verarbeiten kann. Meine Funktionscode die Daten in einen Baum für das Drehen, und es dann als CSV-Ausdrucken, ist wie folgt:Ausführen von as.Node aus dem data.tree-Paket in R

treetrimmer2 <- function(x, y) { 
    urimodel <- as.Node(x) 
    uridf <- ToDataFrameTree(urimodel, "level", "count") 
    uridf <- filter(uridf, level <= y, count != 0) 
    filename <- paste(x$year[1], x$month[1], ".csv", sep="") 
    write.csv(uridf, file = filename, fileEncoding = "CP1252") 
} 

Einige Monate ohne Frage beenden. Andere Monate, aber geben Sie mir die folgenden Fehler (und Traceback):

Error in (function() : unused argument (quote(<environment>)) 

7 (function() 
{ 
    c(self$parent$path, self$name) 
})(quote(<environment>)) 
6 self$AddChildNode(child) 
5 mynode$AddChild(path) 
4 FromDataFrameTable(x, pathName, pathDelimiter, colLevels, na.rm) 
3 as.Node.data.frame(x) 
2 as.Node(x) at media_visualizer.R#63 
1 treetrimmer2(uricut$`2015.06`, 5) 

Kann jemand mir einige Hinweise auf das, was ‚nicht verwendete Argument (quote())‘ bedeutet? Ich habe versucht, es zu googeln und festgestellt, dass es in einigen Fällen bedeutet, dass eine Funktion oder ein Begriff bereits in einem anderen Kontext definiert wurde. Aber ich bin immer noch zu Anfänger, um zu verstehen, was das hier bedeutet.

Ich starte rStudio 0.99.896 und R 3.2.4 auf Mac OS 10.11.5. Ich würde meinen Datensatz teilen, außer dass es ziemlich massiv ist, und ich bin nicht sicher, welche Linien das Problem verursachen ...

+0

Das sieht wie ein Fehler aus. Leider kann ich es nicht reproduzieren. Kannst du mir bitte den Datensatz schicken? (zu der E-Mail, die als data.tree Maintainer bereitgestellt wird: siehe https://cran.r-project.org/web/packages/data.tree/). Außerdem: Verwenden Sie data.tree 0.3.5 (d. H. Zur Zeit das neueste von CRAN)? –

+0

Ich bin glücklich, meinen Datensatz zu teilen. Durch einen schrittweisen Prozess der Aufteilung in zwei Teile und das Ausführen beider Hälften konnte ich das Problem auf 20.000 Zeilen reduzieren, die in eine E-Mail passen. Und ich benutze data.tree 0.3.5. –

+0

Dies ist ein wirklich faszinierender Fehler. Siehe https://github.com/gluc/data.tree/issues/65 –

Antwort

1

Ich kann keinen Kredit dafür beanspruchen; Christoph Glur (siehe Kommentare zum Hauptbeitrag) hat es herausgefunden. Aber es könnte für andere nützlich sein, die Ursache zu teilen, und meine Lösung:

Das Problem besteht darin, dass einige der Protokolldateien eines der reservierten Wörter des data.tree-Pakets enthalten, in diesem Fall "Pfad". Das Format der Zeilen war "/etwas/etwas/pfad/etwas/etwas.jpg", so dass data.tree "weg" als eigenständiges Wort liest. Es gab andere Instanzen von "path" als Teil eines größeren Wortes, z. B. "pathString" oder "pathTo", die den Fehler nicht verursacht haben.

Sobald er es dachte, hatte herausstellte, war meine Lösung den folgenden Befehl auf alle Protokolldateien im Terminal auszuführen:

sed -i '' 's/\/path\//\/spath\//' *.log 

Ich bin immer noch ein Neuling, aber wie ich es verstehe, was Das bedeutet, dass in allen .log-Dateien die Instanzen von "/ path /" mit "/ spath /" gefunden und ersetzt werden. Ich interessiere mich nicht wirklich für dieses eine Wort, Pfad gegen Spath (was Kauderwelsch ist), also war es egal, es zu ändern. Und jetzt wird die as.Node() - Funktion ordnungsgemäß auf dem Datensatz ausgeführt.

Danke, Christoph!

Verwandte Themen