IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Comment faire une liste de listes identiques ?


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 13
    Par défaut Comment faire une liste de listes identiques ?
    Bonjour,

    Dans le but d'illustrer les distributions d'échantillonnage,
    pour construire 5 échantillons de taille 10 suivant une loi normale de moyenne 2 et d'écart type 5, je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    x=lapply(rep(10,5),rnorm, 2, 5)
    x
    lapply(x,mean)
    x est donc une liste de listes dont je peux calculer les moyennes.

    J'aimerai faire la même chose avec une population que je choisirai et créer 10 échantillons de taille 20 avec remise, j'ai essayé ceci mais cela ne marche pas du tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    population=rnorm(100,2,5)
    x=lapply(rep(population,10),sample, 20, replace = TRUE)
    rep(population,10) ne fait pas une liste de 10 populations, il met les 10 populations dans la même liste.
    Comment puis-je m'en sortir ?

    Merci,
    Fabrice (grand débutant R).

  2. #2
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Par défaut
    Bonjour,

    la fonction rep ne va pas créer une liste mais un vecteur. Si tu veux créer une liste avec 10 éléments qui contiennent la population tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    l1 <- vector("list", 10)
    for (i in 1:10) l1[[i]] <- population
    # ou
    l1 <- split(rep(population, 10), gl(10, length(population)))
    Ensuite tu faire ton sample via un lapply et calculer la moyenne.
    Le plus simple est d'échantillonner 10 fois directement dans population sans créer la liste intermédiaire.
    Tu peux te servir de lapply comme d'une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    l2 <- lapply(1:10, function(u) sample(population, 20, replace = TRUE))
    # equivalent à 
    l2 <- vector("list", 10)
    for (i in 1:10) l2[[i]] <- sample(population, 20, replace = T)
    Ca reviendra au même que de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    l1 <- split(rep(population, 10), gl(10, length(population)))
    l2 <- lapply(l1, sample, 20, replace = TRUE)
    Et tu t'évites la création de la liste intermédiaire l1.

    Après tu peux calculer les moyenne en refaisant un lapply(l2, mean) ou tu peux directement mettre le calcul de la moyenne au moment ou tu fais le tirage aléatoire.

    Après il y a pas mal d'alternatives possibles. Tu aurais pu faire tous tes tirages d'un coup et de calculer la moyenne via un tapply ou alors répliquer ton calcul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tapply(sample(population, 20*10, replace = TRUE), gl(10, 20), mean)
    # repliquer le calcul 10 fois :
    replicate(10, mean(sample(population, 20, replace = TRUE)))
    cdlt

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/03/2007, 09h42
  2. [Vb.net] Comment faire une liste à partir d'une string
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/10/2006, 14h15
  3. Comment faire une liste d'évènements ?
    Par WebPac dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 10h36
  4. Comment faire une liste d'image de choix ?
    Par poussinphp dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/10/2005, 00h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo