2017-11-06 56 views
0

vielleicht kann mir jemand bei meinem Problem helfen.R-Script in Rapidminer

Ich arbeite mit Rapid und das R-Script Operator und ein 369 x 258 Vorkommen Matix mit dem folgende R-Script verarbeiten:

# rm_main is a mandatory function, 
# the number of arguments has to be the number of input ports (can be none) 
rm_main = function(data) 
{ 
total_occurrence <- colSums(data) 
data_matrix <- as.matrix(data) 
co_occurrence <- t(data_matrix) %*% data_matrix 
library(igraph) 
graph <- graph.adjacency(co_occurrence, 
          weighted = TRUE, 
          mode="undirected", 
          diag = FALSE) 
tkplot(graph, 
     vertex.label=names(data), 
     vertex.size=total_occurrence*1, 
     edge.width=E(graph)$weight*1,) 

dev.copy (tk_postscript, file= '/home/knecht/r-graph.pdf') 
dev.off() 
} 

Nach dem Erstellen des Graphen des Prozeß mit der Fehlermeldung beendet " kann nicht vom Null-Gerät kopiert werden ".

Also meine Frage ist, wie kann ich das Diagramm in einer Datei wie Postscript oder PNG drucken?

Art Bezug

Tobias

Antwort

1

Ich konnte nicht die R-Code bekommen außerhalb Rapidminer zu arbeiten, damit ich ein paar Änderungen vorgenommen, anstatt Verwendung tkplot zu drucken (die so interaktiv ist vielleicht kämpfen sowieso).

Ich fügte auch einige einfache Daten in den Code, um das Beispiel reproduzierbar zu machen.

Ändern Sie den Speicherort der erstellten PNG-Datei an einen Ort, an dem Sie Ergebnisse speichern möchten (RapidMiner verwendet temporäre lokale Ordner, sodass Sie den Speicherort explizit angeben müssen).

rm_main = function(data) 
{ 
    data2 = matrix(c(1,2,3,1,2,1), nrow = 2, ncol = 3) 
    total_occurrence <- colSums(data2) 
    data_matrix <- as.matrix(data2) 
    co_occurrence <- t(data_matrix) %*% data_matrix 
    library(igraph) 
    graph <- graph.adjacency(co_occurrence, 
         weighted = TRUE, 
         mode="undirected", 
         diag = FALSE) 
    png('c:/temp/r-graph.png')      
    plot(graph, 
     vertex.label=names(data2), 
     vertex.size=total_occurrence*1, 
     edge.width=E(graph)$weight*1,) 
    dev.off() 
return(list(data)) 
} 
+0

vielen Dank –