Wektorowe ifelse()
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 48 z 64.
if sprawdza jeden warunek. Gdy otrzyma wektor zawierający kilka wartości, kończy działanie z błędem the condition has length > 1. ifelse(test, yes, no) działa na każdym elemencie osobno i zwraca jeden wynik dla każdego elementu:
temps <- c(12, 25, 31, 18)
print(ifelse(temps > 20, "warm", "cool"))Wynik:
[1] "cool" "warm" "warm" "cool"yes i no mogą być wektorami o tej samej długości, więc każdy element może otrzymać własną obliczoną wartość:
price <- c(40, 120, 75)
final <- ifelse(price > 100, price * 0.9, price)
print(final)Wynik:
[1] 40 108 75Zagnieżdżaj wywołania ifelse(), aby uzyskać więcej niż dwa wyniki. Warunki są sprawdzane po kolei dla każdego elementu:
scores <- c(95, 72, 48, 81)
grade <- ifelse(scores >= 90, "A", ifelse(scores >= 70, "B", "C"))
print(grade)Wynik:
[1] "A" "B" "C" "B"ifelse() jest przydatne w przypadku nowej kolumny ramki danych, gdy każdy wiersz potrzebuje własnej etykiety:
df <- data.frame(item = c("tea", "oil"), stock = c(0, 8))
df$status <- ifelse(df$stock == 0, "sold out", "available")
print(df)Wynik:
item stock status
1 tea 0 sold out
2 oil 8 availableWyzwanie
ŁatwyUzupełnij shipping(weights). Zwróć koszt wysyłki każdej paczki, połączony za pomocą , : paczki o wadze do 1 kg kosztują 4, do 5 kg kosztują 9, a cięższe paczki kosztują 2 za kg. Użyj ifelse(), a nie pętli.
Dostarczony kod odczytuje wagi z wiersza rozdzielonego przecinkami i wyświetla zwróconą wartość.
Spróbuj swoich sił
shipping <- function(weights) {
# Wpisz tutaj swój kod
""
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(shipping(as.numeric(strsplit(input[1], ",")[[1]])), sep = "\n")
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Łańcuchy znaków w szczegółach
Podciągi za pomocą substr()Formatowanie za pomocą sprintf()Dzielenie i łączenieWyszukiwanie w łańcuchach znakówZastępowanie tekstuPowtórka – kreator nazwy użytkownika4Macierze
Tworzenie macierzyIndeksowanie macierzyPodsumowania wierszy i kolumnDziałania na macierzachPowtórka – plan miejsc10Zaawansowane sterowanie przepływem
Funkcja switch()Wektorowe ifelse()repeat i breakFunkcje rekurencyjnePodsumowanie — klasyfikator ocen2Wyszukiwanie wartości po kluczach
Wyszukiwanie nazwanych elementów wektoraSprawdzanie kluczyDodawanie i usuwanie kluczyIterowanie po nazwachPowtórzenie — giełda5Projekt — dziennik ocen
Dodawanie uczniówZapisywanie ocen3Zbiory i zliczanie
Unikalne wartościOperacje na zbiorachTesty przynależnościZliczanie za pomocą table()Podsumowanie — goście wydarzenia6Funkcje jako wartości
Funkcje anonimowePrzekazywanie funkcjiZwracanie funkcjiDomknięcia ze stanemPowtórka — reguły rabatowe9Ramki danych
Tworzenie ramek danychKolumny i wierszeFiltrowanie wierszyDodawanie i sortowaniePodsumowanie – raport sprzedaży12Projekt – śledzenie wydatków
Rejestrowanie wydatkówŁączne wydatkiPoćwicz samodzielnie: Kompilator R online