Purrr – funkcje na wektorach i listach

Biblioteka Purrr to zestaw narzędzi programowania funkcyjnego do pracy z funkcjami, wektorami i listami, który pozwala w łatwy sposób zrezygnować z pętli.

Nasze zmagania z tą biblioteką zacznijmy od jej zainicjowania:

Utwórzmy listę x zawierającą 100 elementów:

Korzystając z funkcji map do każdego elementu listy zaimplementujemy dowolną funkcję. Na przykład sprawdzającą czy dany element jest większy od 7:

Utwórzmy teraz kolejną listę y:

Mając dwie listy o tej wielkości możemy sumować odpowiadające sobie elementy za pomocą funkcji map2:

Wykorzystując pmap możemy zimplementować dowolną funkcję na dowolnej liczbie list lub wektorów:

Biblioteka purrr ma wiele narzędzi do szybkiego filtrowania list i wektorów. Napiszmy najpierw funkcję func zwracającą wartość logiczną w przypadku, gdy wartość x jest większa od 20:

Do wyselekcjonowania elementów listy spełniających wyrażenie w funkcji używamy funkcji keep:

Odwrotny efekt uzyskamy stosując funkcję discard:

Funckja head_while zwraca wszystkie pierwsze elementy z listy spełniające wyrażenie:

Do sprawdzenia czy wszystkie elementy listy spełniają wyrażenie służy every:

Some sprawdza czy którykolwiek z elementów spełnia wyrażenie:

Has_element pozwala sprawdzić, czy lista zawiera konkretny element:

Do zwracania pierwszej wartości z listy spełniającej wyrażenie służy funkcja detect:

Możemy również zwrócić tylko indeks tego elementu listy korzystając z detect_index:

Do łaczenia list wykorzystujemy append i prepend. Różnica pomiędzy nimi jest taka, że kolejność łączonych elementów jest odwócona:

Mając wielowymiarową listę:

Możemy ją uprościć do jednowymiarowej korzystając z flatten:

Lub transponować:

Zaprezentowana dzisiaj biblioteka jest rozbudowanym pakietem narzędziowym do pracy na wektorach i listach z wykorzystaniem programowania funkcyjnego. Przedstawiliśmy Wam tylko kilka najciekawszych zastosowań. Po więcej musicie sięgnąć do dokumentacji:)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Translate using Google Translate»
Social media & sharing icons powered by UltimatelySocial

Podoba Ci się nasza strona? Odwiedź nasz profil