Búsquedas en vectores con nombre
Parte de la sección Lógica y flujo del Journey de R de Coddy. Lección 7 de 64.
Un vector con nombre almacena valores bajo nombres, lo que lo convierte en una tabla de búsqueda: el nombre es la clave y el elemento es su valor. Coloca el nombre entre [[ ]] para obtener únicamente el valor.
prices <- c(tea = 4, cake = 7)
print(prices[["cake"]])
print(names(prices))Salida:
[1] 7
[1] "tea" "cake"Los corchetes simples devuelven el elemento junto con su nombre. [[ ]] devuelve solo el valor:
prices <- c(tea = 4, cake = 7)
print(prices["cake"])
print(prices[["cake"]] * 2)Resultado:
cake
7
[1] 14El nombre puede provenir de una variable, que es la forma en que un programa busca una clave que leyó de la entrada:
prices <- c(tea = 4, cake = 7)
item <- "tea"
print(prices[[item]])Salida:
[1] 4Un vector de nombres busca varias claves a la vez, incluidos los repetidos, por lo que sum() calcula el total de un pedido en un solo paso:
prices <- c(tea = 4, cake = 7)
order <- c("tea", "cake", "tea")
print(sum(prices[order]))Salida:
[1] 15Un nombre inexistente se comporta de manera diferente en las dos formas: prices["milk"] devuelve NA, y prices[["milk"]] se detiene con el error subscript out of bounds.
Desafío
FácilCompleta line_total(item, qty). La función define el menú que aparece a continuación. Devuelve el precio de item multiplicado por qty, formateado con dos decimales: tea y 3 dan 7.50.
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)Cada elemento de la entrada está en el menú. El código proporcionado lee el elemento y la cantidad, e imprime el valor devuelto.
Pruébalo tú mismo
line_total <- function(item, qty) {
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)
# Escribe tu código aquí
""
}
# Código de entrada/salida suministrado: mantenlo tal como está
input <- suppressWarnings(readLines(file("stdin")))
cat(line_total(input[1], as.numeric(input[2])), 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