Añadir estudiantes
Parte de la sección Lógica y flujo del Journey de R de Coddy. Lección 22 de 64.
En este proyecto construirás un libro de calificaciones que lee comandos, uno por línea, y responde a cada uno. A lo largo de cinco pasos, aprenderá a añadir estudiantes, registrar calificaciones, informar de los promedios y encontrar al estudiante con la mejor calificación. Cada paso amplía la misma función gradebook(commands).
ADD ada
GRADE ada 90
AVG ada
REPORT
TOPLas calificaciones se almacenan en una lista con nombres: el nombre de cada estudiante se asigna a un vector numérico con las calificaciones de ese estudiante. Una lista encaja porque cada estudiante contiene varios valores.
grades <- list()
grades[["ada"]] <- numeric(0)
grades[["ada"]] <- c(grades[["ada"]], 90)
print(length(grades[["ada"]]))
print(names(grades))Salida:
[1] 1
[1] "ada"numeric(0) es un vector numérico vacío. Asignar c() no funcionaría aquí: es NULL, y asignar NULL elimina una entrada de la lista.
Cada comando se divide por espacios, por lo que parts[1] es el comando y parts[2] el nombre. Una cadena de if / else if determina qué hacer:
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
if (parts[1] == "ADD") {
# manejar ADD
}
}Las respuestas se recopilan con replies <- c(replies, ...) y se devuelven al final.
Desafío
FácilCompleta gradebook(commands) para el primer comando:
ADD <name>: si el estudiante es nuevo, guárdalo sin calificaciones y respondeadded <name>. Si el nombre ya está almacenado, responde<name> already exists.
El código proporcionado pasa cada línea de entrada a gradebook() como un comando y muestra cada respuesta devuelta en su propia línea. Un nombre es una palabra en minúsculas, y la entrada contiene únicamente los comandos descritos hasta ahora.
Pruébalo tú mismo
gradebook <- function(commands) {
grades <- list()
replies <- c()
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
# Escribe tu código aquí
}
replies
}
# Código de entrada/salida suministrado: déjalo tal como está
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Cadenas a fondo
Subcadenas con substr()Formateo con sprintf()Dividir y unirBuscar cadenasReemplazar textoRepaso - Constructor de nombres de usuario4Matrices
Creación de matricesIndexación de matricesResúmenes de filas y columnasAritmética de matricesRepaso: tabla de asientos2Búsquedas clave-valor
Búsquedas en vectores con nombreComprobar clavesAñadir y eliminar clavesRecorrer nombresRepaso: panel bursátil5Proyecto - Libro de calificaciones
Añadir estudiantesRegistrar calificaciones3Conjuntos y conteo
Valores únicosOperaciones con conjuntosPruebas de pertenenciaConteo con table()Repaso: invitados al evento6Funciones como valores
Funciones anónimasPasar funcionesDevolver funcionesClausuras con estadoRepaso: reglas de descuento9Marcos de datos
Creación de marcos de datosColumnas y filasFiltrado de filasAdición y ordenaciónRepaso - Informe de ventas12Proyecto: Rastreador de gastos
Registro de gastosGasto totalPractica por tu cuenta: Compilador de R online