web-dev-qa-db-fra.com

Comment copier et coller des données dans R du presse-papiers?

Le titre dit tout: mes données sont ouvertes dans une autre application (par exemple, une feuille de calcul, comme Excel, ou un éditeur de texte). Si je copie ces données dans le Presse-papiers de mon système d'exploitation, comment puis-je les lire dans R en tant que data.frame?

45
Moderat

En supposant que vous ayez des données dans le presse-papiers Windows (par exemple, des données copiées à partir d'Excel), pour les mettre dans une variable appelée copdat in R, utilisez:

copdat <- read.delim("clipboard")

Si vous souhaitez copier des données d'une variable R nommée rdat dans le presse-papiers de Windows (par exemple, pour copier dans Excel), utilisez:

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

Le nom et la connexion exacte utilisée pour le "Presse-papiers" varient en fonction du système d'exploitation.

pour les fenêtres: 

x <- read.delim("clipboard")

pour Mac OS: 

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

Cela fonctionne car read.delim, comme de nombreuses fonctions, acceptera une gamme de types de connexion allant au-delà d'un simple fichier. Pour les Mac, nous utilisons en fait un tuyau. help(connections) est assez informatif.

Le paquet psychologique a une fonction read.clipboard() qui le facilite un peu en testant votre système d’exploitation.

Comme noté par d'autres ici, vous pouvez également écrire dans le presse-papiers. Il existe normalement une limite de 32 K, qui peut être augmentée en ajoutant un trait d'union et un numéro après le presse-papier, par exemple en transmettant jusqu'à 256 K de données provenant de l'objet df avec:

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

Il existe un plugin package/RStudio R appelé datapasta qui le fait très proprement - voir https://CRAN.R-project.org/package=datapasta . L'image ci-dessous est une démonstration de sa simplicité

 enter image description here

7
wjchulme

Si vous voulez lire des données tabulaires d'une feuille de calcul, j'ai utilisé le code suivant

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

Tapez data = as.numeric(read.table(text = "125 140 200 200 190 ", sep = " ")) où vos numéros se placent entre les guillemets text = " "

6
Moderat

Une méthode que j'ai testée et fonctionne à la fois sous Windows et MacOS consiste à utiliser textConnection() avec read.table().

Tout d’abord, collez vos données dans une variable sous forme de texte:

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"

Ensuite, lisez la chaîne de texte en utilisant read.table ()

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

Non testé sur Linux ou d'autres systèmes Unix, mais je crois que cela devrait fonctionner multi-plateforme.

0
Tom

J'avais besoin de copier un url composite dans le clipboard de Windows , alors que read.table() générait un vecteur de caractères avec des guillemets autour de mon URL . À la place, j'ai utilisé writeClipboard(URL,format=1) du paquet utils , et ça a fait l'affaire.

0
Oscar

Consultez la documentation pour ?file, section Clipboard:

Presse-papiers fichier peut être utilisé avec description = "clipboard" en mode "r" uniquement. Ceci lit la sélection primaire X11 (voir http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt ), qui peut aussi être spécifiée comme "X11_primary" et la sélection secondaire comme "X11_secondary". . Sur la plupart des systèmes, la sélection du presse-papiers (celle utilisée par ‘Copier’ dans un menu ‘Edition’ peut être spécifiée) comme "X11_clipboard". Lorsqu'un presse-papiers est ouvert en lecture, le contenu est immédiatement copié dans la mémoire de stockage interne. Les utilisateurs Unix souhaitant écrire dans l’une des sélections X11 peuvent le faire via xclip ( http://sourceforge.net/projects/xclip/ ) ou xsel ( http: //www.vergenet. net/~ conrad/software/xsel/ ), par exemple, par un tuyau ("xclip -i", "w") pour la sélection primaire. Les utilisateurs de macOS peuvent utiliser pipe ("pbpaste") et pipe ("pbcopy", "w") pour lire et écrire dans le Presse-papiers de ce système. 

oui, par exemple avec magrittr:

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