James Marshall
James Marshall

Reputation: 91

R remove an object from a list of vectors

I have a list of vectors and i would like to remove a specific object. Any ideas hot to achieve that?

Lets say i would like to remove the object F. How can i do that?

blocks <- list(
                        c("A", "B"),
                        c("C"),
                        c("D","E", "F")
    )

Upvotes: 1

Views: 819

Answers (2)

akrun
akrun

Reputation: 887881

We could also use setdiff with Map

Map(setdiff, blocks, 'F')
#[[1]]
#[1] "A" "B"

#[[2]]
#[1] "C"

#[[3]]
#[1] "D" "E"

or with lapply

lapply(blocks, setdiff, 'F')
#[[1]]
#[1] "A" "B"

#[[2]]
#[1] "C"

#[[3]]
#[1] "D" "E"

Upvotes: 5

josliber
josliber

Reputation: 44340

If you wanted to remove the third element of the third element of your list, you could try:

blocks[[3]] <- blocks[[3]][-3]
blocks
# [[1]]
# [1] "A" "B"
# 
# [[2]]
# [1] "C"
# 
# [[3]]
# [1] "D" "E"

If you wanted to remove all elements equal to "F", you could use lapply and a user-defined function to process each vector in the list, removing all "F" elements.

lapply(blocks, function(x) x[x != "F"])
# [[1]]
# [1] "A" "B"
# 
# [[2]]
# [1] "C"
# 
# [[3]]
# [1] "D" "E"

Upvotes: 3

Related Questions