2012-11-18 17 views
42

Il titolo dice tutto: ho i miei dati aperti in un'altra applicazione (ad es. Un foglio di calcolo, come Excel, o un editor di testo). Se copio i dati negli appunti del mio sistema operativo, come posso leggerli in R come data.frame?Come faccio a copiare e incollare dati in R dagli Appunti?

+2

possibile duplicato del [codice per importare i dati da una query di Stack overflow in R] (http://stackoverflow.com/questions/10849270/code-to -import-data-da-uno-stack-overflow-query-in-r) – GSee

risposta

47

Supponendo di avere dati nella clipboard di Windows (ad esempio, dati da Excel copiato), a mettere i dati in una variabile denominata copdat in uso R:

copdat <- read.delim("clipboard") 

Se si desidera copiare i dati da un R variabile denominata rdat negli appunti di Windows (ad esempio, per copiare in Excel) usa:

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

Digitare data = as.numeric(read.table(text = "125 140 200 200 190 ", sep = " ")) dove i numeri vanno tra le virgolette text = " ".

+4

'read.table (text = readClipboard(), sep =" ")' può funzionare anche meglio. –

+0

Questo è simile: http://stackoverflow.com/a/10004019. Usando quel codice, puoi fare 'data = as.numeric (qw ('125 140 200 200 190'))' – GSee

+4

@ DavidJ.Harris, 'readClipboard' funziona solo su Windows. – GSee

34

il nome e il collegamento esatto utilizzato per il 'appunti' varia a seconda del sistema operativo.

per Windows:

x <- read.delim("clipboard") 

per Mac OS:

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

Questo funziona perché read.delim, come molte funzioni, accetta una vasta gamma di tipi di connessione al di là di un semplice file. Per i Mac stiamo effettivamente usando una pipe. help(connections) è piuttosto informativo.

Il pacchetto ps ha una funzione read.clipboard() che rende questo un po 'più semplice testando il sistema operativo.

Come notato da altri qui, è anche possibile scrivere negli appunti. V'è normalmente un limite di 32 K, che può essere sollevato tramite l'aggiunta di un trattino e il numero dopo appunti come nel caso, ad esempio, il passaggio fino a 256 K vale la pena di dati provenienti da oggetto df con:

write.table(df, "clipboard-256") 
+1

In Ubuntu si sostituisce 'pbpaste' con' xsel -bo' o possibilmente 'xclip' in un altro * nix. – isomorphismes

+0

Vorrei che questa fosse una risposta accettata ... (beh, io uso OS X). – Blaszard

+0

@isomorphismes quindi il comando ubuntu sarebbe 'read.delim (pipe (" xsel -bo "))'? L'ho provato e non ha funzionato. Si suppone che quel comando funzioni per copia/incolla di LibreOffice? – Reilstein

6

Se si desidera per leggere nei dati tabulari da un foglio di calcolo, ho usato il seguente codice

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

avevo bisogno di copiare un composito in Windows , mentre read.table() emessi un vettore di caratteri tra virgolette intorno al mio URL. Invece, ho usato writeClipboard(URL,format=1) dal pacchetto , e ha fatto il trucco.

0

Guardate la documentazione per ?file, sezione Clipboard:

Appunti file può essere utilizzato con description = "appunti" in modalità "r" solo. Questo legge la selezione primaria X11 (vedi http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt), che può anche essere specificata come "X11_primary" e la selezione secondaria come "X11_secondary".Sulla maggior parte dei sistemi, la selezione degli appunti (usata da "Copia" da un menu "Modifica") può essere specificata come "X11_clipboard". Quando un blocco appunti viene aperto per la lettura, i contenuti vengono copiati immediatamente nella memoria interna della connessione. Gli utenti Unix che desiderano scrivere su una delle selezioni X11 possono farlo tramite xclip (http://sourceforge.net/projects/xclip/) o xsel (http://www.vergenet.net/~conrad/software/xsel/), ad esempio tramite pipe ("xclip -i", "w") per la selezione primaria. Gli utenti macOS possono usare pipe ("pbpaste") e pipe ("pbcopy", "w") per leggere e scrivere negli appunti di quel sistema.

così, ad esempio con magrittr:

base::file(description='clipboard') %>% readLines 
Problemi correlati