2014-04-23 1 views
-2

Je souhaite vectoriser la façon dont je dessine. Supposons que j'ai un vecteur de valeurs de paramètres pour poisson, et pour chaque paramètre, je veux dessiner 1 échantillon. Y a-t-il un moyen de le faire sans boucler?Dessin à partir de différentes distributions sans bouclage R

+0

'rpois' est vectorisé déjà. – Thomas

+0

Comment faites-vous cela? rpois (1, vecteur)? Cela ne dessine pas 1 pour chaque élément dans le vecteur. – robertevansanders

+0

La lecture de '? Rpois' pourrait aider à répondre à cela. –

Répondre

2

Vous devez spécifier des vecteurs pour chaque argument de fonction afin d'obtenir un résultat vectoriel:

> rpois(rep(1,4), lambda = c(1,10,100,1000)) 
[1] 0 12 88 1031 

En ce qui concerne le premier argument, voir the documentation:

La longueur du résultat est déterminé par n pour rpois, et est le maximum des longueurs des paramètres numériques pour les autres fonctions.

Les paramètres numériques autres que n sont recyclés à la longueur du résultat. Seuls les premiers éléments des paramètres logiques sont utilisés.

Si vous avez besoin de plusieurs tirages à chaque niveau, vous devrez mapply (ou Vectorize) la fonction:

> mapply(rpois, rep(4,4), lambda = c(1,10,100,1000)) 
    [,1] [,2] [,3] [,4] 
[1,] 0 8 78 1016 
[2,] 0 10 106 1044 
[3,] 1 14 97 1004 
[4,] 0 13 94 983 
+0

Que fait le rep? Quand vous faites rep (111111,4), .. il donne le même résultat. Merci de votre aide. – robertevansanders

+1

@ robbieboy74 Voir édition. 'Mapply/Map' recyclera les arguments si nécessaire. – Thomas

+0

'Map (rpois, 4, c (1,10,100,1000))' va couper la moutarde. – thelatemail

Questions connexes