Zastępowanie tekstu
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 5 z 64.
sub(pattern, replacement, x) zastępuje pierwsze dopasowanie w każdym ciągu znaków, a gsub() zastępuje każde dopasowanie. Podobnie jak w przypadku grepl(), fixed = TRUE traktuje wzorzec jako zwykły tekst.
date <- "2024-01-15"
print(sub("-", "/", date, fixed = TRUE))
print(gsub("-", "/", date, fixed = TRUE))Wynik:
[1] "2024/01-15"
[1] "2024/01/15"Zastąpienie pustym ciągiem znaków usuwa dopasowania. Dzięki temu tekst jest czyszczony przed konwersją na liczbę:
price <- "$1,299.00"
clean <- gsub(",", "", sub("$", "", price, fixed = TRUE), fixed = TRUE)
print(clean)
print(as.numeric(clean) * 2)Wynik:
[1] "1299.00"
[1] 2598Bez fixed = TRUE wzorzec jest wyrażeniem regularnym. Dwa przydatne elementy: [0-9] dopasowuje dowolną cyfrę, a + powtarza poprzedzający go element co najmniej raz, więc " +" dopasowuje ciąg spacji.
msg <- "call me at 555 0199"
print(gsub(" +", " ", msg))
print(gsub("[0-9]", "#", msg))Wynik:
[1] "call me at 555 0199"
[1] "call me at ### ####"Podobnie jak inne funkcje operujące na ciągach znaków, sub() i gsub() działają na każdym elemencie wektora:
codes <- c("a-1", "b-22", "c-3")
print(gsub("-", "", codes, fixed = TRUE))
print(sub("-[0-9]+", "", codes))Wynik:
[1] "a1" "b22" "c3"
[1] "a" "b" "c"Wyzwanie
ŁatwyUzupełnij slugify(title). Zwróć tytuł zapisany małymi literami, bez spacji na początku ani na końcu, a każdy ciąg spacji zastąp pojedynczym znakiem -: Hello World daje hello-world.
Dostarczony kod odczytuje tytuł i wypisuje zwróconą wartość.
Spróbuj swoich sił
slugify <- function(title) {
# Napisz tutaj swój kod
title
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(slugify(input[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