Для вашего примера списка вы можете просто сделать:
unlist(x)[ c(TRUE,FALSE) ]
но это зависит от каждого подсписка, имеющего ровно 2 элемента.
Если есть разное количество элементов, вы можете сначала sapply
вычислить длины, затем вычислить соответствующие позиции 1-го элемента (см. cumsum
), А затем выбрать эти значения из unlist
списка ed. Но к тому времени принятый ответ, вероятно, будет намного проще.
Если все подсписки имеют одинаковую длину (но могут отличаться от 2), вы можете сделать что-то вроде:
do.call( rbind, x)[,1]
или другое приведение к общему объекту. Но я сомневаюсь, что это будет так же эффективно, как и lapply
подход.