Dzielenie i łączenie
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 3 z 64.
strsplit(x, split) dzieli ciąg znaków przy każdym separatorze. Zwraca listę zawierającą jeden wektor znaków dla każdego wejściowego ciągu, więc użyj [[1]], aby uzyskać części pojedynczego ciągu.
csv <- "red,green,blue"
parts <- strsplit(csv, ",")[[1]]
print(parts)
print(length(parts))Wynik:
[1] "red" "green" "blue"
[1] 3paste() działa w odwrotny sposób. Za pomocą collapse łączy elementy jednego wektora w pojedynczy ciąg znaków, umieszczając między nimi tekst collapse. sep umieszcza separator między argumentami, element po elemencie.
words <- c("one", "two", "three")
print(paste(words, collapse = "-"))
print(paste(words, 1:3, sep = "_"))Wynik:
[1] "one-two-three"
[1] "one_1" "two_2" "three_3"Tekst wejściowy często zawiera spacje wokół separatorów. trimws() usuwa spacje z początku i końca każdego elementu:
raw <- " apples , pears,plums "
items <- trimws(strsplit(raw, ",")[[1]])
print(items)
print(paste(rev(items), collapse = " | "))Wynik:
[1] "apples" "pears" "plums"
[1] "plums | pears | apples"strsplit() zastosowane do wektora zwraca po jednym elemencie listy na każdy ciąg znaków, więc każdy wiersz wejściowy zachowuje własne części:
lines <- c("a,b", "c,d,e")
parts <- strsplit(lines, ",")
print(length(parts))
print(parts[[2]])Wynik:
[1] 2
[1] "c" "d" "e"Wyzwanie
ŁatwyUzupełnij hashtags(line). Wiersz zawiera tagi oddzielone przecinkami, ewentualnie ze spacjami wokół nich. Zwróć jeden ciąg znaków, w którym każdy tag ma prefiks #, a tagi są oddzielone pojedynczymi spacjami: r, data ,stats zamienia się w #r #data #stats.
Podany kod odczytuje wiersz i wyświetla zwróconą wartość.
Spróbuj swoich sił
hashtags <- function(line) {
# Napisz tutaj swój kod
line
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(hashtags(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