2013-10-01 5 views
11

Я пытаюсь извлечь второй подэлемент каждого элемента в списке, игнорируя Nas в R. Вот небольшой пример:Извлечения второго подэлемента каждого элемента в списке, игнорируя числовые апертуры в sapply в 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, Н.А., 9. Другими словами, я хочу, чтобы игнорировал и сохранял NA, чтобы выход был sa me length как число элементов в списке. Я хотел бы, чтобы решение было достаточно общим, чтобы иметь возможность применять его к другому подэлементу, n, из каждого списка.

ответ

24

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

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

или более сжато, но то же самое, 'sapply (MyList, \' [\ ', 2) ' – nograpes