Enregistrer une sortie R dans un fichier

Auteur.e.s
Fabrice Dessaint, Inra
Résumé

Cette fiche présente deux fonctions permettant d'enregistrer dans un fichier externe tout ou partie du contenu de la console de R.

La fonction capture.output()

Pour enregistrer le contenu d’une sortie R dans un fichier externe, on peut utiliser la fonction capture.output(). Cette fonction prend comme arguments, le nom de l’objet contenant la sortie à sauvegarder, le nom du fichier extérieur (file=).

formatR::usage(capture.output)
## capture.output(..., file = NULL, append = FALSE,
##     type = c("output", "message"), split = FALSE)

On veut enregistrer le contenu d’une partie du tableau R dans le fichier iris.txt:

data(iris)
output <- head(iris)
capture.output(output, file = "iris.txt")

# ou directement capture.output(head(iris), file='Essai.txt')

Le fichier iris.txt contient le résultat de l’instruction, à savoir les premières lignes du tableau iris.

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa 

Les objets à capturer peuvent être plus compliqués; par exemple les sorties de fonctions statistiques:

iris.lm <- lm(Sepal.Length ~ Species, data = iris)
capture.output(iris.lm, file = "Anova.txt")

On obtient un fichier Anova.txt qui contient:

Call:
lm(formula = Sepal.Length ~ Species, data = iris)

Coefficients:
      (Intercept)  Speciesversicolor   Speciesvirginica  
            5.006              0.930              1.582  

On peut compléter le contenu de ce fichier en utilisant l’argument append=TRUE:

output <- summary(iris.lm)
capture.output(output, file = "Anova.txt", append = TRUE)

Le fichier Anova.txt contient maintenant les 2 sorties affichées par les fonctions print() et summary()

Call:
lm(formula = Sepal.Length ~ Species, data = iris)

Coefficients:
      (Intercept)  Speciesversicolor   Speciesvirginica  
            5.006              0.930              1.582  


Call:
lm(formula = Sepal.Length ~ Species, data = iris)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.6880 -0.3285 -0.0060  0.3120  1.3120 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)         5.0060     0.0728  68.762  < 2e-16 ***
Speciesversicolor   0.9300     0.1030   9.033 8.77e-16 ***
Speciesvirginica    1.5820     0.1030  15.366  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5148 on 147 degrees of freedom
Multiple R-squared:  0.6187,    Adjusted R-squared:  0.6135 
F-statistic: 119.3 on 2 and 147 DF,  p-value: < 2.2e-16

La fonction sink()

La fonction sink() redirige l’affichage de la console R vers un fichier.

formatR::usage(sink)
## sink(file = NULL, append = FALSE, type = c("output", "message"),
##     split = FALSE)

Exemple:

data(iris)
sink(file = "Console.txt")
head(iris)
iris.lm <- lm(Sepal.Length ~ Species, data = iris)
iris.lm
summary(iris.lm)
sink()

On obtient le fichier suivant.

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

Call:
lm(formula = Sepal.Length ~ Species, data = iris)

Coefficients:
      (Intercept)  Speciesversicolor   Speciesvirginica  
            5.006              0.930              1.582  


Call:
lm(formula = Sepal.Length ~ Species, data = iris)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.6880 -0.3285 -0.0060  0.3120  1.3120 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)         5.0060     0.0728  68.762  < 2e-16 ***
Speciesversicolor   0.9300     0.1030   9.033 8.77e-16 ***
Speciesvirginica    1.5820     0.1030  15.366  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5148 on 147 degrees of freedom
Multiple R-squared:  0.6187,  Adjusted R-squared:  0.6135 
F-statistic: 119.3 on 2 and 147 DF,  p-value: < 2.2e-16

Comme les sorties sont redirigées vers un fichier, on ne les visualise plus dans la console de R.

Versions des outils utilisés
R version 3.4.2 (2017-09-28)
Fichiers complémentaires
Thèmes de la fiche
Thèmes