¿Cómo puedo eliminar un elemento de una lista?

Resuelto David Locke asked hace 54 años • 20 respuestas

Tengo una lista y quiero eliminar un solo elemento de ella. ¿Cómo puedo hacer esto?

Intenté buscar cuáles creo que serían los nombres obvios para esta función en el manual de referencia y no encontré nada apropiado.

David Locke avatar Jan 01 '70 08:01 David Locke
Aceptado

Si no desea modificar la lista in situ (por ejemplo, para pasar la lista con un elemento eliminado a una función), puede utilizar la indexación: los índices negativos significan "no incluir este elemento".

x <- list("a", "b", "c", "d", "e")  # example list

x[-2]        # without 2nd element

x[-c(2, 3)]  # without 2nd and 3rd

Además, los vectores de índice lógico son útiles:

x[x != "b"]  # without elements that are "b"

Esto también funciona con marcos de datos:

df <- data.frame(number = 1:5, name = letters[1:5])

df[df$name != "b", ]      # rows without "b"

df[df$number %% 2 == 1, ] # rows with odd numbers only
Florian Jenn avatar Mar 24 '2009 21:03 Florian Jenn

No conozco R en absoluto, pero una búsqueda creativa en Google me llevó hasta aquí: http://tolstoy.newcastle.edu.au/R/help/05/04/1919.html

La cita clave de allí:

No encuentro documentación explícita para R sobre cómo eliminar elementos de las listas, pero la prueba y error me lo dice.

miLista[[5]] <- NULL

eliminará el quinto elemento y luego "cerrará" el agujero causado por la eliminación de ese elemento. Eso afecta los valores del índice, por lo que debo tener cuidado al eliminar elementos. Debo trabajar desde el final de la lista hacia el frente.

Una respuesta a esa publicación más adelante en el hilo dice:

Para eliminar un elemento de una lista, consulte la pregunta frecuente de R 7.1.

Y la sección correspondiente de las preguntas frecuentes de R dice:

... No establezca x[i] o x[[i]] en NULL, porque esto eliminará el componente correspondiente de la lista.

Lo que parece indicarle (de forma un tanto al revés) cómo eliminar un elemento.

Chad Birch avatar Mar 16 '2009 21:03 Chad Birch