Arytmetyka wektorów i recykling
Część sekcji Podstawy ścieżki R w Coddy. Lekcja 69 z 78.
Gdy wykonujesz działania arytmetyczne na dwóch wektorach o tej samej długości, R stosuje działanie element po elemencie:
a <- c(1, 2, 3)
b <- c(10, 20, 30)
print(a + b)Wynik:
[1] 11 22 33A co się dzieje, gdy wektory mają różne długości? R stosuje mechanizm nazywany powielaniem. Krótszy wektor jest powtarzany, aby dopasować jego długość do długości dłuższego wektora:
numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)Wynik:
[1] 10 200 30 400 50 600Tutaj multiplier zostało powielone, aby przed mnożeniem utworzyć c(10, 100, 10, 100, 10, 100). Jest to szczególnie przydatne podczas wykonywania operacji na pojedynczej wartości:
prices <- c(10, 20, 30)
print(prices * 1.1)Wynik:
[1] 11 22 33Pojedyncza wartość 1.1 jest powielana, aby dopasować długość do prices. Zachowaj ostrożność, gdy długość dłuższego wektora nie jest wielokrotnością długości krótszego, ponieważ R i tak wykona operację, ale może wyświetlić ostrzeżenie o częściowym powielaniu.
Wyzwanie
ŁatwyOtrzymasz dwa wiersze danych wejściowych:
- Rozdzielona przecinkami lista liczb reprezentujących wartości bazowe (np.
10,20,30,40,50,60) - Rozdzielona przecinkami lista mnożników (np.
2,5)
Używając arytmetyki wektorowej i recyklingu:
- Utwórz wektor liczbowy z wartości bazowych
- Utwórz wektor liczbowy z mnożników
- Pomnóż wartości bazowe przez mnożniki (R powtórzy krótszy wektor)
- Wyświetl wynik mnożenia
- Dodaj
100do każdego elementu oryginalnych wartości bazowych (recykling pojedynczej wartości) - Wyświetl wynik dodawania
- Odejmij wektor mnożników od wektora wartości bazowych
- Wyświetl wynik odejmowania
Na przykład, jeśli dane wejściowe to:
5,10,15,20,25,30
3,7Wynik powinien być następujący:
[1] 15 70 45 140 75 210
[1] 105 110 115 120 125 130
[1] 2 3 12 13 22 23Wyjaśnienie:
- Mnożenie: Mnożniki
c(3, 7)są powtarzane jakoc(3, 7, 3, 7, 3, 7), co daje5*3, 10*7, 15*3, 20*7, 25*3, 30*7 - Dodawanie: Pojedyncza wartość
100jest powtarzana i dodawana do każdego elementu - Odejmowanie: Mnożniki są ponownie powtarzane, co daje
5-3, 10-7, 15-3, 20-7, 25-3, 30-7
Spróbuj swoich sił
# Odczytaj dane wejściowe
con <- file("stdin", "r")
base_input <- suppressWarnings(readLines(con, n = 1))
multipliers_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Przekształć wartości oddzielone przecinkami w wektory liczbowe
base_values <- as.numeric(strsplit(base_input, ",")[[1]])
multipliers <- as.numeric(strsplit(multipliers_input, ",")[[1]])
# TODO: Napisz swój kod poniżej
# 1. Pomnóż base_values przez multipliers (recykling nastąpi automatycznie)
# 2. Wyświetl wynik mnożenia
# 3. Dodaj 100 do każdego elementu base_values
# 4. Wyświetl wynik dodawania
# 5. Odejmij multipliers od base_values
# 6. Wyświetl wynik odejmowaniaTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 2
Operatory logiczne (AND, OR)Operatory logiczne, część 2 (NOT)Powtórka — prosta logikaLogika wektoryzowana, część 1Logika wektoryzowana, część 27Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika10FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz13Zaawansowane wektory
Wycinanie i indeksowanie wektorówIndeksowanie logiczneArytmetyka wektorów i recyklingOperator %in%2Zmienne i typy danych
Liczbowy typ danychCałkowity typ danychZnakowy typ danychLogiczny typ danychSprawdzanie typów danychKonwencje nazewnictwaBrakujące wartości: NAPodsumowanie – tworzenie zmiennych8Pętle
Pętla forPętla whilePrzerwijNastępna iteracja (continue)Powtórka — silniaGenerowanie sekwencji (seq, :)Pętle zagnieżdżonePowtórka — dynamiczne wprowadzanie danych3Operatory, część 1
Operatory arytmetyczneDzielenie całkowite i moduloOperatory przypisaniaPowtórka — prosta matematykaOperatory porównania6Podstawowe wejście/wyjście
Wyświetlanie danychCat jako wyjścieWyjście z użyciem zmiennychOdczyt danych wejściowych za pomocą readline()Podstawy konwersji typówPowtórka — kalkulator wiekuPowtórka — prawda czy fałsz9Funkcje
Deklarowanie funkcjiArgumenty funkcjiWartości zwracanePowtórzenie — funkcja SigmaPowtórzenie — funkcja walidującaDomyślne wartości parametrówPoćwicz samodzielnie: Kompilator R online