Malheureusement il est souvent difficile de répondre à la question parce que le code inséré n'est pas reproductible.
Cela a pour conséquence non seulement d'alourdir la discussion par des messages hors du sujet technique ("Quel package utilisez-vous ?", "Je n'arrive pas à reproduire votre sortie", etc.), mais aussi de décourager les membres du forum qui sauraient répondre mais n'ont pas de temps à perdre à deviner ce qui manque dans le code. Pour s'en persuader, il suffit de rechercher le terme "reproductible" sur le forum.
Qu'est-ce qu'un code reproductible ?
Un code reproductible est un code dont l'exécution produit sur tous les ordinateurs une sortie identique à celle produite sur l'ordinateur de celui qui pose la question, sans nécessiter l'exécution préalable d'autres lignes de code.
Dans la plupart des cas, le code est non reproductible parce qu'il y manque des données ou l'indication d'un package.
Exemple 1 NON reproductible:
Code : Tout sélectionner
S <- matrix(0.9,5,5)
diag(S) <- 1
mvrnorm(n=10, rep(1,5), Sigma=S)
Résultat: Error: could not find function "mvrnorm"
(On ne sais pas dans quel package se trouve la fonction mvrnorm)
Exemple 1 reproductible:
Code : Tout sélectionner
library(MASS)
S <- matrix(0.9,5,5)
diag(S) <- 1
mvrnorm(n=10, rep(1,5), Sigma=S)
Exemple 2 NON reproductible:
Code : Tout sélectionner
z <- read.table("courbe.txt", header=TRUE, sep='\t')
xyplot(y~x, data=z)
Résultat: Error in file(file, "rt") : cannot open the connection
cannot open file 'courbe.txt': No such file or directory
Le fichier 'courbe.txt' n'est pas sur le disque...
De plus le package de la fonction xyplot() n'est pas précisé.
Exemple 2 reproductible:
Code : Tout sélectionner
library(lattice)
z <- structure(list(x = 1:10, y = c(0, 0.693147180559945, 1.09861228866811,
1.38629436111989, 1.6094379124341, 1.79175946922805, 1.94591014905531,
2.07944154167984, 2.19722457733622, 2.30258509299405)), .Names = c("x",
"y"), row.names = c(NA, -10L), class = "data.frame")
xyplot(y~x, type='l', data=z)
Pour plus de détails sur la façon d'insérer les données, voir ce lien:
http://forums.cirad.fr/logiciel-R/viewtopic.php?f=1&t=3302
(Ne PAS insérer TOUT son jeu de données mais SEULEMENT un extrait nécessaire et suffisant).
Remarque : un code qui provoque une erreur est reproductible si l'erreur est l'objet de la question.
Exemple 3 (reproductible)
(Question : "Je ne comprends pas cette erreur")
Code : Tout sélectionner
x <- 0
if (x=0) x <- NA
Résultat: Error: unexpected '=' in "if (x="
Ce code est reproductible car l'erreur produite est l'objet de la question.
Comment vérifier qu'un code est reproductible avant de le poster sur le forum ?
C'est très simple:
1) Vérifier que le code ne va lire aucun fichier de données sur disque
2) Sauver le code et quitter R
3) Relancer R et copier-coller le code dans la fenêtre commande
Si le code donne la sortie attendue, il est reproductible.