66 pnzuRrry
Ibbela 2.1: Funkcje z pakietu bose do operowania na łańcuchach znaków
nchar(wektor) |
Zlicza liczbę znaków w napisie lub w wektorze napisów (w tym przypadku wynikiem jest wektor liczb). |
toupper(wektor) |
Zamienia wszystkie litery w napisie lub wektorze napisów na duże. |
tolower(wektor) |
Zamienia wszystkie litery w napisie lub wektorze napisów na małe. |
chartrCstare, nowe, wektor) |
Transliteracja. Funkcja zamienia w łańcuchu znaków lub wektorze łańcuchów znaki określone w stare na inne określone argumentem nowe. |
substr(x, start, stop) |
Wynikiem tej funkcji jest podłańcuch łańcucha znaków x, począwszy od znaku o indeksie start do znaku o indeksie stop. |
8trsplit(x, wzorzec) |
Ta funkcja rozbija łańcuch znaków na podłańcuchy rozdzielane zadanym wzorcem. Wynikiem jest lista podłańcuchów. |
grep(wzorzec, wektor) |
Wynikiem tej funkcji są indeksy elementów wektora, w których wystąpił dany wzorzec. |
agrep(wzorzec,x) |
Wynikiem tej funkcji są indeksy elementów wektora, w których w przybliżeniu wystąpił dany wzorzec. W przybliżeniu oznacza, że szukane są dopasowania o odległości edytorskiej Levenshteina, nie większej niż zadany próg (domyślnie, nie różniące się więcej niż jednym znakiem). |
sub(wzorzec, zamiennik, |
Zamienia pierwsze wystąpienie łańcucha wzorzec |
wektor) |
na zamiennik w łańcuchu znaków lub w wektorze. |
gsub(wzorzec, zamiennik, wektor) |
Zamienia wszystkie wystąpienia łańcucha wzorzec na zamiennik w łańcuchu znaków lub w wektorze. |
> tt przypiszmy do zmiennej wartość typu znakowego
> nazwa = "Wrocław,"
> tt funkcją pasteO możemy sklejać wiele zmiennych (napisów, liczb lub
wartości logicznych lub czynnikowych) w jeden napis
> (napis « pasteCnazwa,"the oeeting place\n",sep=" \n"))
[1] "Wrocław, \nthe meeting place\n"
> tt funkcją catO wyświetlamy ten napis w sposób nieś formatowany
> cat(napis)
Wrocław,
the meeting płace
> tt funkcją printO wyświetlamy ten napis w sposób sformatowany
> print(napis)
[1] "Wrocław, \nthe meeting place\n"
> nchar(napis)
[1] 27
> toupper(napis)
[1] "WROCŁAW, \nTHE MEETING PLACENn"
> tt funkcją subsłrO wycinamy fragment napisu
> substr(napis,10,27)
[1] "\nthe meeting place"
> tt funkcją strsplitO rozbijamy napis (tutaj wektor dwóch napisów) na
listę wektorów napisów rozdzielanych określonym wzorcem
> strspllt(c(nazwa,napis)," ")
[Cl])
[1] "Wrocław,"
CĆ2])
[1] "Wrocław," "\nthe" "meeting" "place\n"
Wektor, to ciąg obiektów tego samego typu. Może to być ciąg liczb, znaków, łańcuchów znaków lub wartości logicznych. Wektory tworzyć można na wiele sposobów, kilka już poznaliśmy w rozdziale I.5.6.6. Możemy tworzyć sekwencje liczb (funkcją seą(base) lub :), możemy łączyć obiekty lub wektory funkcją c(), możemy też skorzystać z funkcji vector(base), która tworzy wektor elementów danego typu o ustalonym rozmiarze. Do generowania wektorów określonego typu wykorzystać można również funkcje double(base), integer(base), character(base) oraz logical(base) generujące wektor elementów danego typu o określonej długości. Poniżej przedstawiamy przykład zainicjowania wektorów różnych typów.
> tt inicjujemy wektor wartości o wskazanym typie i wskazanej długości
> (wektor * vector("integer”,10))
[t] 0 0 0 0 0 0 0 0 0 0
> character(lO)
HH Hit KII II 11 II H II II II II II li II |i II II
> logical(lO)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
: | |
; | |
i | |
■i | |
.V" | |
% | |
1y'l | |
ts | |
Długość wektora można sprawdzić funkcją length(base). Dostęp do elementów wektora uzyskujemy z użyciem operatora [indeksy]. W tym przypadku wektor indeksy to wektor liczb całkowitych (albo dodatnich albo ujemnych) wskazujących wybrane elementy wektora lub wektor wartości logicznych, określający, które wartości chcemy wybrać. Wektor można replikować używając funkcji rep (base).
>> tt sekwencje 1:5 replikujemy trzykrotnie
> (wektor = rep(l:5, times=3))
[1] 123451234512345
> tt sprawdźmy długość wektora
> length(wektor)
[1] 15
> tt wybierzmy elementy wektora podając ich indeksy
> wektor[c(1:3,6))
[1] 12 3 1