1. Grâce à ce formulaire vous pouvez proposer une astuce ou un script sur R.
  2. Votre script doit pouvoir être lancé en l'état. Veuillez penser à :
    • inclure le chargement des "library" nécessaires
    • construire un petit jeu de données si besoin est.
    • commenter les lignes de codes pour en faciliter la compréhension.
  3. Le titre de votre script ou astuce doit être clair et explicite.
  4. Pensez à mettre votre code entre les balises [R] et [/R]; Pour cela, vous pouvez utiliser le bouton

Vous pouvez utiliser vos comptes Facebook, twitter ou google pour vous identifer (google est compatible yahoo, openID...)
L'ideal étant de vous connecter si vous avez un compte utilisateur, ou faire une demande de compte utilisateur si vous n'en avez pas encore.
Créer un compte va vous permettre de pouvoir éditer vos codes et de mettre en avant votre site internet.
Sinon vous pouvez soumettre anonymement en remplissant les champs ci-après.







Choisissez les catégories correspondantes à votre Code:

  • algorithmique
  • Analyse de survie
  • base indispensable
  • bayésien
  • configuration de R
  • exportation de données
  • fonctions utiles
  • graphique
  • importation de données
  • inférence
  • manipulation de données
  • message d'erreur
  • modélisation
  • Non classé
  • optimisation
  • planification
  • programmer avec R
  • regression linéaire
  • Test
  • Transformation de données


Comment importer rapidement plusieurs fichiers CSV

0
dans importation de données
- ça ne sert à rien -- c\'est interessant - (pas encore de vote)
Loading ... Loading ...
Avec R, il est tout à fait possible de réaliser une multiple importation des fichiers CSV (autres types de fichiers). La fonction ci-dessous utilise les fonctions bind_rows et la syntaxe de la librairie dplyr.
 multmerge <- function(mypath = getwd()){
require(dplyr)
 
dataset <- list.files(path=mypath, full.names=TRUE, pattern="\\.csv") %>% lapply(read.csv, header=TRUE, sep="\t") %>% bind_rows()
 
}
Dans cette fonction, l’objet mypath indique l’emplacement où se trouve tous les fichiers CSV. Par défaut, la fonction va chercher dans l’espace de travail actuel (getwd). Il est possible de le modifier manuel comme ci-dessous:
 mydata <-  multmerge(mypath="Nom/Du/Chemin/Des/Fichiers")
Pas encore de commentaire, cliquez ici pour réagir.

Comment importer un fichier RDS via http

0
dans fonctions utiles
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 1 votes)
Loading ... Loading ...
Pour importer un fichier RDS via une url sur un serveur distant, voici une procédure qui focntionne bien :
readRDS(gzcon(url("http://ton_url/Data/fichier.rds")))
Pas encore de commentaire, cliquez ici pour réagir.

Comment fixer et reproduire l’aléatoire ? set.seed()

0
dans algorithmique
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 1 votes)
Loading ... Loading ...
Afin d’utiliser des processus aléatoires mais de faire en sorte qu’ils soient reproductibles dans le temps ou sur une autre machine/système
set.seed()
est une fonction qui permet de fixer les résultats qui seront fournis par le RNG (random number generator).

 
sample(letters[4:9]) 
[1] "d" "g" "f" "h" "i" "e" 
sample(letters[4:9]) 
[1] "e" "i" "g" "f" "h" "d" 
sample(letters[4:9]) 
[1] "f" "d" "e" "h" "i" "g"
 
set.seed(123)
sample(letters[4:9]) 
[1] "e" "g" "i" "f" "h" "d" 
set.seed(123) 
sample(letters[4:9]) 
[1] "e" "g" "i" "f" "h" "d"
 
 


Comment choisir le chiffre à mettre dans la fonction set.seed ? Au hasard ! ;-)


Proposé par Diane.

Pas encore de commentaire, cliquez ici pour réagir.

Initialiser un dataframe vide avec des noms de colonne

0
dans fonctions utiles
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 1 votes)
Loading ... Loading ...
Parfois il peut etre utilise de fabriquer un data.frame vide, sans aucune ligne, mais avec des colonnes définies. Voici une facon de procéder.

 
 
BDD <- as.data.frame(setNames(replicate(5,numeric(0), simplify = F),c("moy","p","val","r2","err") ))
 
Pas encore de commentaire, cliquez ici pour réagir.

Comment fabriquer une formule à partir d’une chaine de caractères? : as.formula()

0
dans fonctions utiles
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 1 votes)
Loading ... Loading ...
la fonction as.formula permet de fabriquer une formule à partir d ‘une chaine de caractères
data(iris)
chaine<-paste0(names(iris)[1],
" ~ ",paste(names(iris)[-1],collapse=" + "))
as.formula(chaine)
lm(as.formula(chaine),data=iris)
 
Pas encore de commentaire, cliquez ici pour réagir.

Comment tracer la courbe d’une fonction connue dans un intervalle donné ? curve()

0
dans fonctions utiles, graphique
- ça ne sert à rien -- c\'est interessant - (score de +2 sur 2 votes)
Loading ... Loading ...
R peut tracer la courbe d’une fonction f(x) pour peu qu’on connaisse sa formule et qu’on lui fixe des bornes.
 curve(expr=1/(sqrt(2*pi)*0.3)*exp(-((x-0)^2/(2*0.3^2))), from=-1.5, to= 1.5)
La fonction curve() prend (entre autres) comme argument expr (l’expression de la fonction, ici la densité de probabilité de la loi normale), from (la borne inférieure de l’intervalle à tracer) et to (la borne supérieure de l’intervalle à tracer) Par défaut curve() utilise un paramètre n fixé à 101 : c’est le nombre de x compris entre from et to qui seront évalués par l’expression renseignée dans expr. Plus n est petit, plus la courbe sera « anguleuse »

Proposé par Diane.

Pas encore de commentaire, cliquez ici pour réagir.

Droplevels() ou comment se débarrasser efficacement de niveaux de facteurs inutilisés

0
dans base indispensable
- ça ne sert à rien -- c\'est interessant - (score de +2 sur 2 votes)
Loading ... Loading ...

 
 jdd <- data.frame(deslettres=letters[1:10], 
                   desnombres=seq(1:10), 
                   desfacteurs=c(rep("oui",5), rep("non", 5))) 
 
 levels(jdd$deslettres)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
 # il y a 10 niveaux pour la variable qualitative "deslettres"
 
 # en filtrant sur les nombres....
 library(dplyr)
 unextrait<-filter(jdd,desnombres > 5)
 levels(unextrait$deslettres)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" 
 # ...le nouveau jeu de données garde les anciens noms de niveaux de "deslettres"
 



Pour s’en débarrasser, depuis R 2.12.0, la fonction droplevels() rend cette opération aisée…


 
 
 # ...sur tout le jeu de données :  
 droplevels(unextrait)
 summary(unextrait) 
 
 
 # ...sur une variable en particulier : 
 droplevels(unextrait$deslettres)
 summary(unextrait)
 
 # ...sur tout le jeu de données sauf celle mentionnées dans l'argument except : 
 droplevels(unextrait, except="desfacteurs")
  
  
 

Proposé par Diane.

Pas encore de commentaire, cliquez ici pour réagir.

Comment faire une Analyse en Composantes Principale (ACP) sur R ? PCA, plot.PCA

0
dans fonctions utiles, manipulation de données
- ça ne sert à rien -- c\'est interessant - (score de +2 sur 4 votes)
Loading ... Loading ...

La fonction PCA() permet d’effectuer une ACP.

 
library(FactoMineR)
res_pca <- PCA (iris, quali.sup=5)
#On réalise une ACP sur les 4 variables quantitatives du jeu de données iris
#La 5<sup>ème</sup> variable qui correspond au nom de la variété est qualitative
#Nous plaçons cette variable en supplémentaire,
#cette variable ne participera donc pas à la construction de l’ACP,
#mais elle apportera de l’information supplémentaire
 
plot.PCA(res_pca,col.quali="blue", label="quali")
#La fonction plot.PCA contient de nombreux paramètres modulables
#ici nous choisissons la couleur de la variable qualitative
#et de cacher l’étiquette des individus grâce au paramètre « label »
 
 

Pour pouvoir décrire les résultats de cette analyse nous avons besoin d’étudier les coefficients de corrélation. On obtient ces coefficients grâce à la fonction dimdesc().

 
dimdesc(res_pca)
 
 

Proposé par Helene F.

Pas encore de commentaire, cliquez ici pour réagir.

Comment analyser les résidus d’une régression linéaire simple sur R ? rstudent

0
dans fonctions utiles
- ça ne sert à rien -- c\'est interessant - (score de +3 sur 3 votes)
Loading ... Loading ...

Contrairement à la fonction residuals(), la fonction rstudent() permet d’obtenir des résidus de même variance. Ce critère est nécessaire pour pouvoir étudier et comparer les résidus.

 
reg_simp <- lm(Sepal.Length~Petal.Length, data=iris)
#On réalise une régréssion linéaire
 
residus=rstudent(reg_simp)
#On calcule les residus
 
plot(residus, ylab="Résidus")
#On represente les résidus dans un graphique
 
abline(h=c(-2,0,2), lty=c(2,1,2))
#La fonction abline permet d'ajouter des droites d'ordonnées -2, 0 et 2
 

En théorie, 95% des résidus se trouvent dans l’intervalle [-2,2]. C’est le cas ici puisque seulement 4 individus sur 150 sont en dehors de cet intervalle. Les individus à l’extérieur de l’intervalle sont des individus extrêmes. 

 

Proposé par Helene F.

Pas encore de commentaire, cliquez ici pour réagir.

Comment effectuer une régression linéaire simple sur R ? lm

0
dans fonctions utiles
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 3 votes)
Loading ... Loading ...

La régression linéaire simple permet de modéliser une relation linéaire entre deux variables quantitatives dans le but d’expliquer un phénomène ou de le prédire.

 
#On commence par représenter les données :
plot(Sepal.Length~Petal.Length, data=iris)
#On constate que la relation entre la largeur des sépales et celle des pétales semble être linéaire
 
#On estime les paramètres :
Reg.simp <- lm(Sepal.Length~Petal.Length, data=iris)
 
#Call:
#lm(formula = Sepal.Length ~ Petal.Length, data = iris)
 
#Residuals:
#     Min       1Q   Median       3Q      Max
#-1.24675 -0.29657 -0.01515  0.27676  1.00269
 
#Coefficients:
#             Estimate Std. Error t value Pr(>|t|)   
#(Intercept)   4.30660    0.07839   54.94   <2e-16 ***
#Petal.Length  0.40892    0.01889   21.65   <2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 
#Residual standard error: 0.4071 on 148 degrees of freedom
#Multiple R-squared:   0.76,     Adjusted R-squared:  0.7583
#F-statistic: 468.6 on 1 and 148 DF,  p-value: < 2.2e-16
 
 

On obtient une matrice “Coefficients” qui contient pour chaque paramètre son estimation, son écart-type estimé et la p-value. Si la p-value est inférieure à 0.05 cela signifie que la relation entre les deux variables est significative.

Proposé par Helene F.

Pas encore de commentaire, cliquez ici pour réagir.
Formation logiciel R