Search code examples
rlistunique

creating one new vector from a list with 3 vectors in it, but eliminate duplicate values


I have a list that contains multiple lists of three vectors

That prints:

 [[1]]
[[1]][[1]]
[1] 1 2

[[1]][[2]]
[1] 1 3

[[1]][[3]]
[1] 2 3


[[2]]
[[2]][[1]]
[1]  4 5

[[2]][[2]]
[1]  5 6

[[2]][[3]]
[1] 4 6

I want to create two vectors:

c(1, 2, 3), c(4, 5, 6)

I have also tried to unique(unlist(x)) which works but loses the references to the positions within the list. I have multiple lists within my lists, so when I apply unique(unlist(list(x))) it just creates one string. I want to keep my vector c(1, 2, 3) separate from the next list of c(4, 5, 6)


Solution

  • You are almost there. You just need to apply your solution to all the lists separately.

    lapply(lst, function(x) unique(unlist(x)))
    
    #[[1]]
    #[1] 1 2 3
    
    #[[2]]
    #[1] 4 5 6
    

    data

    lst <- list(list(c(1, 2), c(1, 3), c(2, 3)), list(c(4,5), c(5, 6), c(4, 6)))