Извлеките второй подэлемент каждого элемента в списке, игнорируя NA в sapply в R

Я пытаюсь извлечь второй подэлемент каждого элемента в списке, игнорируя NA в R. Вот небольшой пример:

mylist <- list(a=c(6,7),b=NA,c=c(8,9))
sapply(mylist, "[[", 1)
sapply(mylist, "[[", 2) #receive error

Поскольку элемент 'b' имеет только один подэлемент (NA), я получаю следующую ошибку при попытке извлечь второй элемент:

Error in FUN(X[[2L]], ...) : subscript out of bounds

Моя цель состоит в том, чтобы выход был: 7, NA, 9. Другими словами, я хочу игнорировать и сохранять NA, чтобы выход был такой же длины, как и число элементов в списке. Я хотел бы, чтобы решение было достаточно общим, чтобы также иметь возможность применять его к другому подэлементу n из каждого списка.

Ответ 1

Это должно делать то, что вы хотите:

sapply(mylist,function(x) x[2])