Przetwarzanie wielu danych wejściowych
Pracujesz jako analityk ds. wynagrodzeń w firmie outsourcingowej. Co miesiąc otrzymujesz dane dotyczące pracowników na liście płac. Twoim zadaniem jest napisanie równoległego kodu w R, który obliczy łączną wypłatę za każdy dzień.
W przestrzeni roboczej masz dwie listy: ls_hours i ls_rates. Każda z nich zawiera 30 elementów – po jednym na każdy dzień miesiąca. Każdy element listy ls_hours przechowuje liczbę przepracowanych godzin przez poszczególnych pracowników w danym dniu, a każdy element listy ls_rates zawiera odpowiadające im stawki godzinowe. Dysponujesz również funkcją calc_payout(), która przyjmuje dwa argumenty: hours i rates.
calc_payout <- function (hours, rates) paste0("$", sum(hours * rates))
Użyj odpowiedniej funkcji z pakietu furrr, aby wykonać to obliczenie równolegle. Pakiet furrr jest już wczytany.
To ćwiczenie jest częścią kursu
Programowanie równoległe w R
Instrukcje do ćwiczenia
- Użyj wariantu
future_map(), który obsługuje wiele danych wejściowych do iteracji. - Połącz
ls_hoursils_rates. - Wskaż funkcję
calc_payout()jako argument wariantufuture_map(). - Przywróć plan sekwencyjny.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
plan(multisession, workers = 5)
# Use the correct future_map() variant
___(
# Combine ls_hours and ls_rates
___(___, ___),
# Specify the function to apply
___)
# Revert to sequential plan
___(___)