Basta ya de indagar por todo internet porque llegaste al sitio exacto, poseemos la solución que quieres y sin liarte.
Sí el list
tipo es una buena aproximación. Puedes usar names()
en su lista para establecer y recuperar el ‘keys’:
> foo <- vector(mode="list", length=3)
> names(foo) <- c("tic", "tac", "toe")
> foo[[1]] <- 12; foo[[2]] <- 22; foo[[3]] <- 33
> foo
$tic
[1] 12
$tac
[1] 22
$toe
[1] 33
> names(foo)
[1] "tic" "tac" "toe"
>
Ni siquiera necesita listas si sus valores de “número” son todos del mismo modo. Si tomo el ejemplo de Dirk Eddelbuettel:
> foo <- c(12, 22, 33)
> names(foo) <- c("tic", "tac", "toe")
> foo
tic tac toe
12 22 33
> names(foo)
[1] "tic" "tac" "toe"
Las listas solo son necesarias si sus valores son cualquiera de mixed modo (por ejemplo, caracteres y números) o vectores.
Tanto para listas como para vectores, un elemento individual puede subdividirse por nombre:
> foo["tac"]
tac
22
O para una lista:
> foo[["tac"]]
[1] 22
Para ampliar un poco la respuesta de Calimo, presento algunas cosas más que pueden resultarle útiles al crear estos cuasi diccionarios en R:
a) cómo devolver todos los VALORES del diccionario:
>as.numeric(foo)
[1] 12 22 33
b) verificar si el diccionario CONTIENE CLAVE:
>'tic' %in% names(foo)
[1] TRUE
c) cómo AGREGAR NUEVO keypar de valores al diccionario:
c(foo,tic2=44)
resultados:
tic tac toe tic2
12 22 33 44
d) cómo cumplir con el requisito de DICCIONARIO REAL – que keys ¿NO SE PUEDE repetir (CLAVES ÚNICAS)? Debe combinar b) y c) y crear una función que valide si existe tal keyy haga lo que quiera: por ejemplo, no permita la inserción, actualice el valor si el nuevo difiere del anterior, o reconstruya de alguna manera key(por ejemplo, le agrega un número para que sea único)
e) cómo ELIMINAR par POR CLAVE del diccionario:
foo<-foo[which(foo!=foo[["tac"]])]