Menu
CoddyTech

Iterowanie po znakach (strsplit

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

Co zrobić, jeśli musisz przetworzyć każdy znak w ciągu znaków osobno? W przeciwieństwie do wektorów, w R nie możesz bezpośrednio przejść pętlą przez znaki ciągu znaków. 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, który należy podzielić, 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 otrzymać 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 liczenie 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. Wypisz każdy znak w osobnym wierszu za pomocą print()
  5. Po pętli wypisz liczbę wystąpień za pomocą cat() w formacie: Count of 'a': X, po którym następuje znak nowej linii

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" jest dzielone na znaki c("b", "a", "n", "a", "n", "a"). Każdy znak jest wypisywany, 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'

# Wypisz 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