Nneka
Nneka

Reputation: 1860

Subset nested list to only include element named in a vector

i have a nested list :

myList <- list(info = "list", 
               elements = list("element 1" = list(cost = 7, distance = 11, quality = 3),
                               "element 2" = list(cost = 7, distance = 13, quality = 3),
                               "element 3" = list(cost = 22, distance = 11, quality = 9)))

from this list i want to keep only some elements. Those elements that should be kept are stored in a vector called toBeSubset

toBeSubset <- c("element 1", "element 3")

i stated with:

names(myList$elements) %in% toBeSubset

but i am stuck here. Any tips?

desired output:

myListSubset <- list(info = "list", 
               elements = list("element 1" = list(cost = 7, distance = 11, quality = 3),
                               "element 3" = list(cost = 22, distance = 11, quality = 9)))

Upvotes: 2

Views: 150

Answers (2)

akrun
akrun

Reputation: 887501

We could also do

c(myList[1], myList[["elements"]][names(myList[["elements"]]) %in% toBeSubset])

Upvotes: 2

Ronak Shah
Ronak Shah

Reputation: 389115

You can do :

c(myList[1], myList$elements[names(myList$elements) %in% toBeSubset])

#$info
#[1] "list"

#$`element 1`
#$`element 1`$cost
#[1] 7

#$`element 1`$distance
#[1] 11

#$`element 1`$quality
#[1] 3


#$`element 3`
#$`element 3`$cost
#[1] 22

#$`element 3`$distance
#[1] 11

#$`element 3`$quality
#[1] 9

Upvotes: 1

Related Questions