Saltar al contenido

Trabajando con diccionarios/listas en R

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"]])]

Comentarios y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 3.5)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *