Per il tuo elenco di esempio puoi semplicemente fare:
unlist(x)[ c(TRUE,FALSE) ]
ma questo dipende dal fatto che ogni sottolista abbia esattamente 2 elementi.
Se ci sono diversi numeri di elementi, puoi prima fare un sapplyper calcolare le lunghezze, quindi calcolare le corrispondenti posizioni del primo elemento (vedi cumsum), quindi selezionare quei valori dall'elenco unlisted. Ma a quel punto la risposta accettata è probabilmente molto più semplice.
Se tutte le sottoliste hanno la stessa lunghezza (ma potrebbero essere diverse da 2), potresti fare qualcosa del tipo:
do.call( rbind, x)[,1]
o qualche altro cast su un oggetto comune. Ma dubito che questo sarebbe efficiente quanto l' lapplyapproccio.