• [^] # Re: Utilisation

    Posté par (site web personnel) . En réponse à la dépêche Sortie de R version 3.0.0. Évalué à 9. Dernière modification le 06 avril 2013 à 15:08.

    Un des gros avantages de R pour les personnes n'ayant que très peu de connaissance en programmation à la base est que R reste un outils simple. On est à la limite du framework et pour peu que l'on travail sur Windows, l'IDE est même pas mal du tout. Sur Linux, on s'en sert plus comme de python, sans ide et tout à l'éditeur de texte et au lancé de script.

    R est bien souvent utilisé de cette manière.

    • On récupère les données très simplement à partir d'un txt, cvs en une ligne de code en spécifiant, les espaces entre les données, les données manquantes, les titres des colonnes avec read.table …
    • On fait son opération en quelques lignes : anova, corrélation, chi2, shapiro, krustal wallis, wilcoxon… la plupart des fonctions utiles sont là de base, sinon on trouve le package qui faut…
    • Et ensuite on sort un graph en 2/2 et les données en autant de temps et on export ça dans le bon format sachant que faire des graphs avec R, c'est vraiment simple et puissant.

    Bref, c'est commode. Et en plus les personnes utilisant R souvent commencent par aimer ce langage, et d'une manière générale commencent à apprécié la programmation (sans pour autant être informaticien à la base) or pour faire du python, à la base, il faut aimer l'informatique. Dans R tu peux faire des fonctions et des trucs un peu plus "top moumoute" quand tu commences à gérer, mais le plus rapide, c'est de faire du petit script perso et limite sale. Comme ce n'est pas utilisé que par des informaticiens, c'est un peu plus souple sur la tolérance au code moche. Typiquement, tu ne peux pas écrire du R comme du c++.

    Aller hop un exemple (sans les données) et un peu dans le désordre :

    Importation - Deux lignes :

    # DISTANCE ENTRE LES NOYAUX
    dist_noy_foe <- read.table("dist_noy_foe.txt", header = FALSE, sep = ";", dec=",")
    colnames(dist_noy_foe) = c("p1.a", "p1.b", "p2.a", "p2.b", "c1.a", "c1.b")
    
    

    Test - une ligne + une ligne pour tout sortir bien au propre dans un fichier texte :

    #Pour tout sortir dans un fichier
    sink(file = "sink-ad.txt")
    # Test sur les ensembles de 10
    kruskal.test(c(dist_noy_ad$p1.a, dist_noy_ad$p2.a, dist_noy_ad$p3.a, dist_noy_ad$p4.a, dist_noy_ad$p5.a, dist_noy_ad$p6.a, dist_noy_ad$p7.a, dist_noy_ad$p8.a, dist_noy_ad$c1.a, dist_noy_ad$c2.a)~gp_ad_10)
    
    

    Affichage - rapide pour du Quick and Dirty - et toujours pas trop compliqué si on veut avoir un graph un peu plus sympa :

    #Nouvelle fenêtre graphique
    x11()
    # On crée une liste comportant tous les éléments qu'on souhaite affiché pour la distance
    l_foe_dist_a_2 = c(foe_dist$p1.a, foe_dist$c1.a)
    # pour la volume
    l_foe_vol_a_2 = c(foe_vol$p1.a, foe_vol$c1.a)
    # Paramètres couleurs - voir colors() ou ? colors()
    # On liste les couleurs souhaitées pour le nombre d'éléments de la liste.
    # Dans notre cas les 60 premiers seront violet et les 60 prochains seront gris
    l_long_foe_col_2 = c(rep("purple", long_foe), rep("darkgrey", long_foe))
    # Paramètres formes - voir - ?pch
    # On liste les formes des points souhaitées pour le nombre d'éléments de la liste.
    # Dans notre cas les 60 premiers seront carrés et les 60 prochains seront en losange
    l_long_foe_pch_2 = c(rep(15, long_foe), rep(18, long_foe))
    #Graphe
    # On crée une grille 2 par 2
    mat = matrix(data = c(1,2,3,4), nrow = 2, ncol = 2)
    # Avec le nuage de point 2 fois plus haut et plus large
    layout(mat, widths = c(2,1), heights = c(2,1))
    #Jitter permet de rajouter un bruit (uniquement pour le graphe)
    # pour éviter d'avoir les données que sur une même ligne
    # On ne met du bruit que pour les distances en abscisse
    plot(jitter(l_foe_dist_a_2), l_foe_vol_a_2, pch = l_long_foe_pch_2, col = l_long_foe_col_2, xlab="Distance", ylab="Volume", main="Foetus - A") 
    #On rajoute une grille rouge de 7 lignes pointillées pour mieux encadrer
    grid(nx = 7, ny = 7, col = "red", lty = "dotted")
    #On ajoute un barplot en bas pour les distances
    boxplot(foe_dist$p1.a, foe_dist$c1.a, horizontal=TRUE, col=c("purple", "darkgrey"), legend.text=TRUE, main="DIST")
    #On ajoute un barplot à droite pour les volumes
    boxplot(foe_vol$p1.a, foe_vol$c1.a, horizontal=FALSE, col=c("purple", "darkgrey"),legend.text=TRUE, main="VOL")
    #On crée un graph vide pour ajouter la légende
    plot(1, type="n", axes=F, xlab="", ylab="")
    legend("topright", legend = c("p1", "c1"), col = c("purple", "darkgrey"), 
    pch = c(15, 18), bty = "n", pt.cex = 2, cex = 0.8, text.col = "black", horiz = TRUE, inset = c(0.1, 0.1))
    
    

    Et paf le résultat :
    Exemple

    La réalité, c'est ce qui continue d'exister quand on cesse d'y croire - Philip K. Dick