En el archivo “parcial-II.R” ud. tiene un script en el cual deberá guardar todos los comandos del ejercicio, siguiendo la demarcación que se muestra en el mismo.
Nota: los ejercicios del parcial son dependientes de los anteriores en el sentido de que utilizan objetos creados, pero no implica que no se puedan tratar de resolver independientemente.
Los ejercicios con (*) presentan un puntaje de 1.5, mientras que los que no tienen (*) equivalen a 1 punto.
Una vez terminado el parcial usted deberá subir a la página del EVA el archivo “parcial-II.R” con su código.
Para simular la cantidad de pasajeros de un ómnibus urbano se ha creado el código que aparece sobre el final del ejercicio (y que también se encuentra en el script parcial-II.R). El criterio es el siguiente: el bus recorre 25 paradas, empezando el trayecto sin pasajeros. En cada parada se subirá una cantidad aleatoria de entre 0 a 6 personas (siendo todas las cantidades equiprobables), pero debido a que existe un máximo estipulado de 44 pasajeros, a partir del momento en que se alcanza ese valor el vehículo deja de subir gente.
*) a. Código incompletoCompletar el código: las líneas en blanco que se encuentran dentro de los límites del código indican en dónde debe cambiarse. El resto de las líneas están correctas.
Código fuente:
# Preparación:
paradas <- 25
pasajeros <- 0
registro[1] <- pasajeros
for (i in 1:paradas) {
# A ver si no se llenó:
if (pasajeros >= 44) {
# Ajuste por si llega a 44 antes de terminar:
registro[i:paradas] <- 44
cat('Bus lleno!\n') # Mensaje de aviso...
break
# Si no se corta el loop, se agrega un nuevo registro:
registro[i] <- pasajeros
# Para ir viendo cuánto hay:
cat('Parada', i, 'hay', pasajeros, 'pasajeros\n')
}
plot(registro, xlab='Parada', ylab='No. de pasajeros')
Sugerencias: (1) la función sample puede ser útil para simular la subida de pasajeros. (2) Tanto en este como en los siguientes ejercicios, en caso de no estar seguro/a de cómo proceder, puede facilitar mucho la tarea hacer un diagrama de flujo sencillo antes de empezar a escribir código.
# supongo que el script que estaba aqui en el archivo lo querias esconder
La siguiente imagen se obtuvo haciendo la simulación, ejecutando previamente set.seed(11) y luego el comando gráfico:
# el comando ```{r}
# plot(registro, xlab='Parada', ylab='No. de pasajeros')
# ```
# no se como ponerlo para que no me de error cuando complilo
Modifique el código de la parte anterior de forma tal que haga lo mismo, pero utilizando un loop while.
Sugerencias: (1) agrege manualmente una variable (p.ej.: i) que sirva para indexar los distintos objetos y recuerde actualizarla en la linea correcta del código y (2) usar un if posterior al loop puede ser útil para sustituir los ceros del final por 44 en el vector registro (aunque no es de ninguna manera el único método).
Nota: el gráfico que se dió en la parte anterior tamibén aplica para este ejercicio.
*) c. Función busModifique el código reparado en la parte a para crear una función llamada bus que ejecute la misma simulación, en la que el número de paradas y capacidad máxima del bus sean los argumentos de la misma. El nombre de estos argumentos son a su elección.
Como salida la función debe devolver simplemente el vector registro.
Nota: recuerde que esta función debe trabajar correctamente para cualquier elección del número de paradas y máximo de pasajeros. En el siguiente ejemplo se muestra un caso que puede servir de referencia:
# supongo que el script que estaba qui en el archivo lo querias esconder
# supongo que queres que se vea este script
set.seed(11)
# Nro. de paradas = 40 Máximo de pasajeros = 80
x <- bus(40, 80)
Hacer una variante del código (de cualquiera de las partes anteriores) en la que además de subir personas, a partir de la parada 10 se bajen entre 1 y 5 pasajeros por parada.
Sugerencia: puede ser muy útil hacer un diagrama de flujo sencillo para planificar el código antes de escribirlo.
El siguiente es un ejemplo del resultado de aplicar los cambios que se piden en la función bus:
# supongo que el script que estaba qui en el archivo lo querias esconder
# spongo que queres que se vea este script
set.seed(11)
x <- bus(30, 60)