Funkcje manipulacji ciągami znaków
Część sekcji Podstawy ścieżki R w Coddy. Lekcja 66 z 78.
Skoro już wiesz, jak dzielić ciągi znaków na pojedyncze znaki, przyjrzyjmy się kilku podstawowym funkcjom do pracy z ciągami znaków w R. Funkcje te pomagają mierzyć, łączyć i przekształcać dane tekstowe.
Funkcja nchar() zwraca liczbę znaków w ciągu znaków:
word <- "hello"
print(nchar(word))Wynik:
[1] 5Aby połączyć wiele ciągów znaków w jeden, użyj paste(). Domyślnie rozdziela elementy spacją:
result <- paste("Hello", "World")
print(result)Wynik:
[1] "Hello World"Użyj paste0(), gdy nie chcesz separatora między ciągami znaków:
result <- paste0("Hello", "World")
print(result)Wynik:
[1] "HelloWorld"Do zmiany wielkości liter R udostępnia funkcje toupper() i tolower():
print(toupper("hello"))
print(tolower("WORLD"))Wynik:
[1] "HELLO"
[1] "world"Te funkcje stają się potężne, gdy połączysz je z poznanymi technikami iteracji, co pozwala przetwarzać i przekształcać tekst znak po znaku lub jako całe ciągi znaków.
Wyzwanie
ŁatwyOtrzymasz dwa wiersze danych wejściowych:
- Imię (np.
john) - Nazwisko (np.
SMITH)
Wykonaj następujące operacje:
- Zamień imię na wielkie litery za pomocą
toupper() - Zamień nazwisko na małe litery za pomocą
tolower() - Połącz je w pełne imię i nazwisko za pomocą
paste()(ze spacją pomiędzy nimi) - Oblicz łączną liczbę znaków w pełnym imieniu i nazwisku (łącznie ze spacją) za pomocą
nchar() - Utwórz nazwę użytkownika, łącząc imię i nazwisko bez separatora za pomocą
paste0(), zapisując całość małymi literami - Wypisz pełne imię i nazwisko
- Wypisz liczbę znaków
- Wypisz nazwę użytkownika
Na przykład, jeśli dane wejściowe to:
alice
WONDERWynik powinien być następujący:
[1] "ALICE wonder"
[1] 12
[1] "alicewonder"Wyjaśnienie: Imię "alice" zmienia się na "ALICE" (wielkie litery), a nazwisko "WONDER" na "wonder" (małe litery). Pełne imię i nazwisko "ALICE wonder" ma 12 znaków (łącznie ze spacją). Nazwa użytkownika łączy oba imiona małymi literami, bez separatora: "alicewonder".
Spróbuj swoich sił
# Odczytaj dane wejściowe
con <- file("stdin", "r")
first_name <- suppressWarnings(readLines(con, n = 1))
last_name <- suppressWarnings(readLines(con, n = 1))
close(con)
# TODO: Napisz swój kod poniżej
# 1. Zamień first_name na wielkie litery za pomocą toupper()
# 2. Zamień last_name na małe litery za pomocą tolower()
# 3. Połącz je w full_name za pomocą paste()
# 4. Oblicz liczbę znaków za pomocą nchar()
# 5. Utwórz username za pomocą paste0() (wyłącznie małe litery)
# Wyświetl wyniki
print(full_name)
print(char_count)
print(username)Ta 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 FizzBuzz2Zmienne 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ów12Iterowanie po sekwencjach
Iterowanie po elementach wektoraUżywanie seq_along()Iterowanie po znakach (strsplitFunkcje manipulacji ciągami znakówPoćwicz samodzielnie: Kompilator R online