it-swarm.com.de

Wie kopiere und füge ich Daten aus der Zwischenablage in R ein?

Der Titel sagt alles: Ich habe meine Daten in einer anderen Anwendung geöffnet (z. B. in einer Kalkulationstabelle wie Excel oder einem Texteditor). Wenn ich diese Daten in die Zwischenablage meines Betriebssystems kopiere, wie kann ich sie dann als data.frame in R einlesen?

45
Moderat

Angenommen, Sie haben Daten in der Windows-Zwischenablage (z. B. Daten aus Excel kopiert), um diese Daten in eine Variable mit dem Namen copdat in R einzufügen, verwenden Sie:

copdat <- read.delim("clipboard")

Wenn Sie Daten aus einer R-Variablen namens rdat in die Windows-Zwischenablage kopieren möchten (z. B. zum Kopieren in Excel), verwenden Sie Folgendes:

write.table(rdat, "clipboard", sep="\t", row.names=FALSE, col.names=FALSE)
53
bill_080

Der Name und die genaue Verbindung, die für die 'Zwischenablage' verwendet werden, variieren je nach Betriebssystem.

für Windows: 

x <- read.delim("clipboard")

für Mac OS: 

x <- read.delim(pipe(“pbpaste”))

Dies funktioniert, da read.delim, wie viele Funktionen, eine Reihe von Verbindungstypen akzeptiert, die über eine Datei hinausgehen. Für Macs verwenden wir eigentlich eine Pipe. help(connections) ist ziemlich informativ.

Das psych-Paket hat eine Funktion read.clipboard(), die dies durch das Testen Ihres Betriebssystems etwas einfacher macht.

Wie bereits erwähnt, können Sie auch in die Zwischenablage schreiben. Normalerweise gibt es ein Limit von 32 K, das durch Hinzufügen eines Bindestrichs und einer Nummer nach der Zwischenablage angehoben werden kann, z. B. durch Übergeben von bis zu 256 K Daten vom Objekt df mit:

write.table(df, "clipboard-256")
40
MattBagg

Es gibt ein R-Paket/RStudio-Plugin namens datapasta, das dies sehr ordentlich macht - siehe https://CRAN.R-project.org/package=datapasta . Das Bild unten demonstriert seine Einfachheit

 enter image description here

7
wjchulme

Wenn Sie Tabellendaten aus einer Kalkulationstabelle einlesen möchten, habe ich folgenden Code verwendet

read.table(file = "clipboard", sep = "\t", header=TRUE)
6
psychonomics

Geben Sie data = as.numeric(read.table(text = "125 140 200 200 190 ", sep = " ")) ein, wo Ihre Zahlen zwischen den text = " "-Anführungszeichen stehen. 

6
Moderat

Eine Methode, die ich unter Windows und MacOS getestet habe und funktioniert, ist die Verwendung von textConnection() mit read.table().

Fügen Sie zunächst Ihre Daten als Text in eine Variable ein:

density_water_str <-   "T_/K Density_g/mL D2O
273 0.999841 1.10469
274 0.999900 NA
275 0.999941 NA
276 0.999965 NA
277 0.999973 1.1057
278 0.999965 1.10562
279 0.999941 NA
280 0.999902 NA
281 0.999849 NA
282 0.999781 NA
281 0.999700 NA"

Dann lese den Textstring mit read.table ()

density_water <- read.table(textConnection(
                                object = density_water_str), 
                            header = TRUE, 
                            sep = "", 
                            stringsAsFactors = FALSE)

Nicht auf Linux oder anderen Unix-Systemen getestet, aber ich glaube, dass dies plattformübergreifend funktionieren sollte.

0
Tom

Ich musste ein zusammengesetztes url in die Windows Zwischenablage kopieren, während read.table() einen Zeichenvektor mit Anführungszeichen um meine URL ausgab .. _. Stattdessen verwendete ich writeClipboard(URL,format=1) aus package utils und es hat den Trick gemacht.

0
Oscar

Schauen Sie sich die Dokumentation für ?file im Abschnitt Clipboard an:

Zwischenablage Datei kann nur mit description = "Zwischenablage" im Modus "r" verwendet werden. Dies liest die X11-Primärauswahl (siehe http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt ), die auch als "X11_primary" und die sekundäre Auswahl als "X11_secondary" angegeben werden kann. . Bei den meisten Systemen kann die Auswahl der Zwischenablage (die von "Kopieren" aus einem "Bearbeiten" -Menü verwendet wird) als "X11_Clipboard" angegeben werden. Wenn eine Zwischenablage zum Lesen geöffnet wird, wird der Inhalt sofort in den internen Speicher der Verbindung kopiert. Unix-Benutzer, die in eine der X11-Auswahlen schreiben möchten, können dies möglicherweise über xclip ( http://sourceforge.net/projects/xclip/ ) oder xsel ( http: //www.vergenet.) Tun. net/~ conrad/software/xsel/ ), zum Beispiel per Pipe ("xclip -i", "w") für die Primärauswahl. macOS-Benutzer können pipe ("pbpaste") und pipe ("pbcopy", "w") verwenden, um aus der Zwischenablage dieses Systems zu lesen und in diese zu schreiben. 

also zB mit magrittr:

base::file(description='clipboard') %>% readLines
0
isomorphismes

Ich benutze Mojave 10.14

Bei der Eingabe des Befehls: X<-read.delim("clipboard") ist in Rstudio Version 1.1.463 für Mac die folgende Warnung aufgetreten:

Error in file(file, "rt") : cannot open the connection In addition: Warning message: In 
file(file, "rt") : cannot open file 'pbpaste': No such file or directory 

Auf der Suche nach Lösungen in Google habe ich unzählige Lösungen, Pakete und Befehle ausprobiert und getestet, damit diese ausgeführt werden können. Nach Tagen und Nächten der Testphase funktioniert sie nun endlich.

Ich hoffe, dass niemand wieder so viel Schmerz mit diesem Problem durchmachen muss, deshalb teile ich diese Informationen.

Befolgen Sie bitte die folgenden Anweisungen, da ich nicht sicher bin, welche Installation die Magie ausgelöst hat (die Downloads müssen nicht in dieser Reihenfolge erfolgen):

  1. Herunterladen R-3.6.1.pkg from https://cran.r-project.org/bin/macosx/

  2. Laden Sie Rstudio von https://www.rstudio.com/products/rstudio/download/#download herunter

  3. Installieren Sie das Paket rcmdr in Rstudio

    Gehen Sie zu "tools"> "Install Packages"> geben Sie rcmdr ein

  4. Laden Sie XQuartz 'X11' von https://www.xquartz.org/ herunter

  5. Laden Sie alle Pakete herunter

    Gehen Sie zu https://cran.r-project.org/bin/macosx/tools/ und laden Sie die folgenden Tools herunter:

    • clang-8.0.0.pkg (OS X 10.11+, signiert, 64-Bit)
    • gfortran-4.2.3.pkg (OS X 10.5+, signierter 64-Bit-Treiber)
    • tcltk-8.5.5-x11.pkg (OS X 10.5+, signiert)
  6. Kehren Sie nun zu Rstudio zurück und geben Sie Folgendes ein:

    X<-read.delim("clipboard") 
    X 
    

    Die in Excel kopierten Daten werden jetzt in die Rstudio-Konsole importiert.

Hoffe, diese Informationen werden sich als hilfreich erweisen.

0
Sukirti Rana

Um die "wjchulme" -Antwort mit "datapasta" zu ergänzen, wenn Sie die Ausgabe von datapasta durch R setzen/interpretieren möchten, um eine Variable mit dem Inhalt der Zwischenablage zu setzen, können Sie Folgendes tun:

read.from.clipboard <- function() {
  mydata<-eval(parse(text=paste(capture.output(datapasta::tribble_paste(output_context = datapasta::console_context()), file=NULL), collapse="")))
  str(mydata); View(capture.output(str(mydata), file=NULL)) #Check guessed format is ok
  return(mydata)
}
mydata<-read.from.clipboard() #Tibble format
mydata<-as.data.frame(read.from.clipboard()) #Data.frame format

0
XAVI