2010-11-12 12 views
2

Doublons possibles:
how to start a for loop in R programming
Creating a for loop in RComment créer une boucle for dans R?

HI Voici le scénario

Speed ​​dating: Vous êtes sûr que vous avez une chance de décrocher une date de 15% avec n'importe quel candidat à un événement local de datation rapide. Lors de l'événement, vous rencontrerez exactement 8 candidats. Après avoir parlé à un candidat pendant 5 minutes, il/elle vous indiquera immédiatement si elle veut sortir avec vous.

La question est ...

Grâce à la simulation, trouver vos chances que le troisième candidat que vous rencontrez est le premier à offre vous une date.

Je cherche le code R (je pense qu'il est une boucle) qui répondra à cette question

+1

Travail à domicile? Peu importe, voir ce Q pour des conseils sur l'utilisation des boucles dans R: http://stackoverflow.com/questions/4162363/how-to-start-a-for-loop-in-r-programming –

+3

@Joe (faux nom) Est c'est une question de devoirs? –

+1

@Joe Voulez-vous savoir comment faire une boucle 'for' dans R, ou voulez-vous la réponse à cette question sur la datation? – Shane

Répondre

9

Ce n'est pas une boucle, mais est un peu plus R centrée sur:

N <- 1000 ## number of simulations to run 
## Make this reproducible by seeding the random number generator 
set.seed(1) 
## read ?sample to see how this works 
## Basically, sampling accept/not accept with 0.15/0.85 probability, 
## N (1000) times for each of three Girls 
df <- data.frame(Girl1 = sample(c(TRUE,FALSE), N, replace = TRUE, 
       prob = c(0.15,0.85)), 
       Girl2 = sample(c(TRUE,FALSE), N, replace = TRUE, 
       prob = c(0.15,0.85)), 
       Girl3 = sample(c(TRUE,FALSE), N, replace = TRUE, 
       prob = c(0.15,0.85))) 
## Show some of the data 
head(df) 
## the row sums tell us how many accepts you'd get, 1, 2, or 3 
outcomes <- rowSums(df) 
## We want the rows with 1 acceptance **and** where Girl3 == TRUE 
wanted <- with(df, which(outcomes == 1L & Girl3)) 
## This gives us the simulation probability 
length(wanted)/N 

Désolé ce n'est pas une boucle - mais vous pouvez essayer de le faire dans une boucle en utilisant ce qui précède à titre indicatif. Nous ne pouvons pas nous faire tout le travail.

+0

dans votre code, est-ce que - signifie la même chose qu'un signe égal? – Joe

+0

@Joe Dans R, '=' et '<-' sont des opérateurs d'assignation équivalents, mais' <-' est préféré du point de vue stylistique. – Shane

+0

@Joe - juste pour ajouter au commentaire de Shane, en général '=' et '<-' peuvent être utilisés de façon interchangeable, mais il y a des situations où vous ne pouvez pas utiliser' = 'où vous pouvez utiliser' <-'. Un exemple est 'avec (df, new <- Girl1)', quand 'with (df, new = Girl1)' échoue. –

18

Voici un exemple de boucle:

for (i in 1:1e7) { 
    cat("I LOVE HOMEWORK!! ") 
} 
+0

@Dirk Il est mauvais comportement d'éditer la réponse réfléchie de quelqu'un d'autre. – Shane

+0

Rétablie. Plus heureux maintenant? –

+0

c'est pourquoi j'ai utilisé chat au lieu de coller(); J'aime l'effet de défilement. Cela me rappelle mes premiers programmes de base! –

Questions connexes