Menu
Coddy logo textTech

Iterowanie po znakach (strsplit

Część sekcji Podstawy ścieżki R w Coddy. Lekcja 65 z 78.

A co, jeśli musisz przetwarzać każdy znak w ciągu znaków osobno? W przeciwieństwie do wektorów nie możesz bezpośrednio iterować po znakach ciągu znaków w R. Funkcja strsplit() rozwiązuje ten problem, dzieląc ciąg znaków na wektor znaków.

Funkcja strsplit() przyjmuje dwa argumenty: ciąg znaków do podzielenia oraz separator. Aby podzielić ciąg na pojedyncze znaki, użyj pustego ciągu "" jako separatora:

word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)

Wynik:

[1] "h" "e" "l" "l" "o"

Zwróć uwagę na [[1]] na końcu. Dzieje się tak, ponieważ strsplit() zwraca listę, a my musimy wyodrębnić pierwszy element, aby uzyskać wektor znaków. Gdy masz już znaki w postaci wektora, możesz iterować po nich, korzystając z technik, których już się nauczyłeś:

word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
  print(char)
}

Wynik:

[1] "R"

Ta technika jest niezbędna w zadaniach takich jak zliczanie określonych znaków, odwracanie ciągów znaków lub sprawdzanie poprawności danych wejściowych znak po znaku.

challenge icon

Wyzwanie

Łatwy

Otrzymasz jeden wiersz danych wejściowych zawierający słowo (np. programming).

Użyj strsplit(), aby podzielić ciąg znaków na pojedyncze znaki:

  1. Podziel słowo wejściowe na wektor znaków
  2. Przejdź pętlą przez każdy znak w wektorze
  3. Policz, ile razy litera "a" występuje w słowie (rozróżniając wielkość liter)
  4. Wydrukuj każdy znak w osobnym wierszu za pomocą print()
  5. Po pętli wydrukuj liczbę wystąpień za pomocą cat() w formacie: Count of 'a': X, a następnie znak nowego wiersza

Na przykład, jeśli dane wejściowe to:

banana

Wynik powinien wyglądać tak:

[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3

Wyjaśnienie: Słowo "banana" zostaje podzielone na znaki c("b", "a", "n", "a", "n", "a"). Każdy znak jest drukowany, a litera "a" występuje 3 razy.

Spróbuj swoich sił

# Odczytaj dane wejściowe
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))

# Zainicjalizuj licznik litery 'a'
count_a <- 0

# TODO: Napisz swój kod poniżej
# 1. Użyj strsplit(), aby podzielić słowo na pojedyncze znaki
# 2. Przejdź w pętli przez każdy znak
# 3. Wypisz każdy znak za pomocą print()
# 4. Policz, ile razy występuje 'a'

# Wyświetl liczbę wystąpień 'a'
cat("Count of 'a': ", count_a, "\n", sep = "")
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator R online