Menu
Coddy logo textTech

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] 14

El 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] 4

Un 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] 15

Un 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.

challenge icon

Desafío

Fácil

Completa 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")
quiz iconPonte a prueba

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

Practica por tu cuenta: Compilador de R online