Unter OSX verwende ich die Funktion system(), um Befehle im Terminal von der R-Konsole als Teil eines Skripts auszuführen, das ich geschrieben habe. Das Skript benötigt eine Verbindung zu einer MySQL() -Datenbank über einen SSH-Tunnel, und ich tippe in die Befehlszeile "ps aux | grep ssh", um zu sehen, mit welchen Tunneln ich verbunden bin. Zum Beispiel einige Ausgaben:
.R - Ausführen von Befehlen im Terminal und Speichern der Ausgabe auf einem Datenrahmen
> system("ps aux | grep ssh")
Home 50915 0.0 0.0 2501204 3264 ?? S 10:32AM server info
Home 50092 0.0 0.0 2504172 3048 ?? Ss 9:35AM server2 info
Home 50090 0.0 0.0 2501372 480 ?? Ss 9:35AM server3 info
Home 1155 0.0 0.0 2544220 1368 ?? S Thu07PM server4 info
Home 51333 0.0 0.0 2434840 800 ?? S 11:00AM 0:00.00 grep ssh
Home 51331 0.0 0.0 2438508 1124 ?? S 11:00AM 0:00.00 sh -c ps aux | grep ssh
.
Ich möchte diese Ausgabe in einen Datenrahmen verwandeln, kann aber nicht. Funktionen wie as.data.frame(system("ps aux | grep ssh"))
funktionieren nicht so, wie ich hoffe, dass sie funktionieren.
Irgendwelche Gedanken dazu würden geschätzt!
EDIT - wollte nur Fehler markieren von einem Kommentar
vorgeschlagen> read.table(pipe("ps aux | grep ssh"))
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
line 1 did not have 34 elements
> pipe("ps aux | grep ssh")
description class mode text opened can read can write
"ps aux | grep ssh" "pipe" "r" "text" "closed" "yes" "yes"
Was haben Sie es nur Rohtext ist, der als data.frame analysiert werden muss. Versuchen Sie 'read.table (pipe (" ps aux | grep ssh "))' stattdessen. – MrFlick