--- title: "Jongler entre R et le presse-papier" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Jongler entre R et le presse-papier} %\VignetteEngine{knitr::rmarkdown} \usepackage[utf8]{inputenc} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, size = "small") ``` Un des problèmes auquel l'on est souvent confronté avec l'utilisation de R est l'importation ou l'exportation de données depuis un tableur (Excel ou Calc). Les solutions souvent utilisées sont l'utilisation de packages (tels que [XLConnect](https://cran.r-project.org/package=XLConnect), [readxl](https://cran.r-project.org/package=readxl) ou [xlsx](https://cran.r-project.org/package=xlsx)) qui permettent de le faire de façon stable. Toutefois, on souhaite parfois une solution simple et rapide comme un simple copier-coller : c'est en fait possible avec R en utilisant le *Clipboard* (presse-papier) ! Les fonction `ctrl_c()` et `ctrl_v()` permettent d'utiliser plus facilement et rapidement ce *Clipboard* : après avoir copié une table d'un tableaur, utiliser `ctrl_v()` sous R pour l'exporter ou, à l'inverse, pour exporter une table `x` de R vers un tableur utiliser `ctrl_c(x)` et ensuite coller le tableur (en appuyant par exemple sur Ctrl+V) ## Importer des données depuis un tableur Pour importer des données depuis le presse-papier, il suffit d'utiliser la fonction `ctrl_v()`. Prenons par exemple le premier tableau de l'*Information Rapide* de l'enquête mensuelle de conjoncture dans l'industrie de juin 2017 () et l'ouvrir avec un tableur (en faisant par exemple un copier/coller) : ```{r,echo=FALSE} data<-matrix(c("Indicateur synthétique","100","106","108","109","108","Production passée","5","9","17","14","10","Stocks","13","7","6","5","6","Carnets de commandes globaux","-18","-9","-6","-5","-3","Carnets de commandes étrangers","-14","-5","-1","-2","-2","Perspectives personnelles de production","5","11","12","16","13","Perspectives générales de production","-9","3","1","7","17"), nrow=7,byrow = TRUE) data<-data.frame(data, stringsAsFactors = FALSE) data[,-1]<-apply(data[,-1],2,as.numeric) colnames(data)<-c("Industrie manufacturière","Moy*","Mars-17","Avr-17","Mai-17","Juin-17") knitr::kable(data, caption = "",align=c("l",rep("c",5))) ``` Pour copier-coller le tableau en entier, commencez par sélectionner les colonnes concernées (par exemples les cellules A1 à F8 si le tableau commence en A1), appuyez sur Ctrl+C et utiliser sous R la fonction `ctrl_v()` : ```{r,eval=FALSE} x <- ctrl_v() x ``` ```{r,echo=F} # colnames(data)<-gsub("\\W","\\.",colnames(data)) data ``` La fonction `ctrl_v()` utilise la fonction `read.table()` pour importer les données. On peut donc personnaliser l'importation des données (voir pour cela les paramètres de `read.table()`). En particulier : - **header** : booléen indiquant si la première ligne contient le nom des colonnes (par défaut c'est le cas dans `ctrl_v()`) ; - **stringsAsFactors** : booléen indiquant s'il faut convertir les chaînes de caractères au format *factor* (par défaut ce n'est pas le cas dans `ctrl_v()`) ; - **dec** : c'est le paramètre spécifiant le séparateur décimal du fichier lu. Par défaut c'est la virgule dans `ctrl_v()` car elle correspond au séparateur utilisé dans les tableurs francophone. Si l'on utilise une autre version d'un tableur c'est le point qui va être utilisé : utiliser dans ce cas l'option `dec = "."`. ## Exporter les données depuis R vers un tableur Alors que pour importer les données depuis le presse-papiers on utilisait la fonction `ctrl_v()`, pour exporter les données sous Excel il faut tout simplement utiliser la fonction `ctrl_c()`. Cette dernière utilise la fonction `write.table()` : pour personnaliser l'export on peut donc modifier les paramètres de `write.table()`. En particulier : - **col.names** : paramètre indiquant s'il faut exporter le nom des colonnes (par défaut c'est le cas) ; - **row.names** : paramètre indiquant s'il faut exporter le nom des lignes (par défaut ce n'est pas le cas) ; - **dec** : c'est le paramètre spécifiant le séparateur décimal à utiliser. Par défaut c'est la virgule qui est utilisé dans `ctrl_c()` (car c'est le séparateur décimal des tableurs francophones). Si l'on souhaite exporter dans un tableur non francophone il faut donc utiliser l'option `dec = "."`. Pour exporter la précédente table il suffit donc de lancer le code R suivant et de faire un Ctrl+V dans le tableur utilisé : ```{r,eval=F} ctrl_c(x) ```