2012-08-15 5 views
5

Ich habe einen Datenrahmen, den ich an ein anderes Programm mit system() übergeben. Im aktuellen Setup schreibe ich zuerst den Inhalt des Datenrahmens in eine Textdatei und lasse dann den Befehl system() nach der erstellten Textdatei suchen.R übergibt Datenrahmen an ein anderes Programm mit System()

df1 <- runif(20) 
write(df1, file="file1.txt") 
system("myprogram file1.txt") 

Ich habe 2 Fragen:

1) Gibt es eine Möglichkeit, einen Datenrahmen direkt zu übergeben, ohne die Textdatei zu schreiben?

2) Wenn nicht, gibt es eine Möglichkeit, die Daten im Speicher als Text formatierte Einheit zu übergeben, ohne die Datei auf die Festplatte zu schreiben?

Vielen Dank für Anregungen.

+0

Wie lang ist ein typischer Datenrahmen? Eine Option wäre, die Daten als Parameter an den Befehl zu übergeben, aber ich denke, was Sie bereits getan haben, ist wahrscheinlich sauberer. – blindjesse

Antwort

7

Sie können auf alle R-Anrufe Verbindungen schreiben, und das beinhaltet Netzwerk-Sockets.

So kann Prozess A in das Netzwerk schreiben, und Prozess B kann es lesen, ohne dass eine Datei-auf-Platte beteiligt ist, siehe help(connections), die sogar ein funktionierendes Beispiel im Abschnitt "Beispiele" enthält.

Ihr allgemeines Thema hier ist Serialisierung, und R macht das für Sie. Sie können Daten auch an andere Programme weitergeben, indem Sie Tools verwenden, die Metadaten über Ihre Datenstruktur codieren - wie zum Beispiel Googles Protokollpuffer (in R unterstützt durch das RProtoBuf Paket).

Verwandte Themen