How to get the nth element of each item of a list, which is itself a vector of unknown length

Xiaoshi picture Xiaoshi · Mar 25, 2017 · Viewed 7.8k times · Source

If we have a list, and each item can have different length. For example:

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

(In order to be clear, we will call objects in a list "items", and objects in the objects of list "elements".)

How can we extract, for example the first element of each item? Here, I want to extract:

1, 3, 5, 6

Then same question for the second element of each item:

2, 4, NA, 7

Answer

akrun picture akrun · Mar 25, 2017

We can create a function using sapply

fun1 <- function(lst, n){
         sapply(lst, `[`, n)
   }
fun1(l, 1)
#[1] 1 3 5 6

fun1(l, 2)
#[1]  2  4 NA  7