Alex Rivera | Logout

How can I remove an element from a list?

Asked 2009-03-16T20:59:36.223
375

I have a list and I want to remove a single element from it. How can I do this?

I've tried looking up what I think the obvious names for this function would be in the reference manual and I haven't found anything appropriate.

Edit
Report

2 Answers

308

If you don't want to modify the list in-place (e.g. for passing the list with an element removed to a function), you can use indexing: negative indices mean "don't include this element".

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

x[-2]        # without 2nd element

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

Also, logical index vectors are useful:

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

This works with dataframes, too:

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
answered 2009-03-24T21:08:08.680
41

Here is how the remove the last element of a list in R:

x <- list("a", "b", "c", "d", "e")
x[length(x)] <- NULL

If x might be a vector then you would need to create a new object:

x <- c("a", "b", "c", "d", "e")
x <- x[-length(x)]
  • Work for lists and vectors
answered 2011-01-13T20:58:21.550

Your Answer