Mam listę w R o długości około 10 000 elementów. Powiedzmy, że chcę wybrać tylko elementy, 5, 7 i 9. Nie jestem pewien, jak bym to zrobił bez pętli for.
Chcę zrobić coś takiego, mylist[[c(5,7,9]]
ale to nie działa. Wypróbowałem także tę lapply
funkcję, ale nie udało mi się też jej uruchomić.
?"[["
: Najważniejszą rozróżnienia[
,[[
i$
jest to, że[
można wybrać więcej niż jeden element, podczas gdy dwa pozostałe wybrać pojedynczy element.Odpowiedzi:
mylist[c(5,7,9)]
powinien to zrobić.Chcesz, aby listy podrzędne były zwracane jako listy podrzędne listy wyników; nie używasz
[[]]
(a raczej funkcja jest[[
) do tego - jak Dason wspomina w komentarzach,[[
łapie element.źródło
b
zawiera 10 milionów elementów.filter_bins
to lista, na której każdy element jest indeksem. więc aby uzyskać tylko elementyb
z tego samego indeksu, mamlapply(filter_bins, function(x) b[x, ])
więc b [x,] zwraca tylko podzbiór wierszy (gdzie każdy element jest wybierany przez filter_bins) .. Mam nadzieję, że to ma sens. Moje pytanie jest takie, że to jest bardzo powolne[[
. Ale jeśli chcesz wyodrębnić wiele elementów, to naprawdę pobierasz podlistę i powinieneś po prostu użyć[