R: Daten in die Zwischenablage kopieren
Es gibt Situationen, wo wie schnell und einfach Daten zwischen zwei Programmen austauschen wollen, beispielsweise wenn wir Daten von R in Excel benötigen. Normalerweise würden wir hierfür oft die Daten beispielsweise als CSV-Datei oder auch direkt als Excel-Datei speichern, aber das kann umständlich werden, gerade wenn es vielleicht nur wenige Daten und oder wir nicht wirklich eine Zwischendatei benötigen. Hier wäre es wesentlich einfacher, die Daten in die Zwischenablage zu kopieren und dann direkt in Excel einzufügen. Wie das geht, zeigen wir in diesem Artikel.
writeClipboard()
R hat direkten Zugriff auf die Zwischenablage von Windows und macOS und zwar über die Funktion writeClipboard()
. Mit ihr können wir beliebigen Text kopieren.
daten <- "StatistikGuru"
writeClipboard(daten)
Mit dem Befehl oben haben wir „StatistikGuru“ in die Zwischenablage kopiert. Die Funktion writeClipboard()
funktioniert allerdings ausschließlich mit Text. Wenn wir versuchen würden eine Zahl zu kopieren, würden wir folgende Fehlermeldung erhalten:
daten <- 3.14159
writeClipboard(daten)
# Fehler in writeClipboard(daten) :
# argument must be a character vector or a raw vector
writeClipboard(as.character(daten)) # Funktioniert
Wenn wir eine Zahl in die Zwischenablage kopieren wollten, müssten wir sie zuerst mit der Funktion as.character()
in eine Zeichenketten umwandeln und dann kopieren. Dies trifft nicht nur auf Zahlen, sondern auch auf andere Datentypen zu (Variablen in R können unterschiedliche Datentypen haben).
Datenrahmen und Matrizen in die Zwischenablage kopieren
Interessanter wird es allerdings, wenn wir mehr Informationen kopieren wollen, beispielsweise einen ganzen Datenrahmen nach Excel. Wenn wir beispielsweise der Variable Datenrahmen
eine Zeitreihe aus CO2-Daten zugewiesen hätten, könnten wir sie wie folgt nach Excel kopieren.
write.table(Datenrahmen, "clipboard", sep="\t", dec=",", row.names=FALSE)
dec=","
sorgt dafür, dass eine Komma als Dezimaltrennzeichen verwendet wird. Sollte eine andere Sprache in Excel oder im Betriebssystem eingestellt sein, muss diese Angabe eventuell entfernt oder angepasst werden, damit die Daten auch als Zahlen erkannt werden.Wenn wir nur die reinen Daten haben möchten – ohne die Spaltenbeschriftungen –, können wir noch zusätzlich col.names=FALSE
hinzufügen:
write.table(Datenrahmen, "clipboard", sep="\t", dec=",", row.names=FALSE, col.names=FALSE)
Dies funktioniert für alle Objekte, die durch write.table()
verarbeitet werden können, wie Datenrahmen (data.frame
), Listen, Vektoren, etc.
"clipboard"
durch "clipboard-16384"
ersetzen (leider funktioniert dies nicht auf allen Betriebssystemen).