66 piizuRrry
Tabela 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. |
chartr(stare, nowe, |
Transliteracja. Funkcja zamienia w łańcuchu zna- |
wektor) |
ków lub wektorze łańcuchów znaki określone w stare na inne określone argumentem nowe. |
substr(x, start, stop) |
Wynikiem toj funkcji jest podłańcuch łańcucha znaków x, począwszy od znaku o indeksie start do znaku o indeksie stop. |
strsplit(x, wzorzec) A. 10* |
Ta funkcja rozbija łańcuch znaków na podlań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. |
* |
> # przypiszmy do zmiennej wartość typu znakowego
> nazwa = "Wrocław,"
> # funkcją pasteO motemy sklejać wiele zmiennych (napisów, liczb lub
wartości logicznych lub czynnikowych) w jeden napis
> (napis « pasteCnazwa,"the meeting place\n",sep=" \n"))
Cl] "Wrocław, \nthe meeting place\n"
> Z funkcją cai() wyświetlamy ten napis w sposób nieśformatowany
> cat(napis)
Wrocław,
the meeting place
> Z funkcją printO wyświetlamy ten napis w sposób sformatowany
> print(napie)
[1] "Wrocław, \nthe meeting place\n"
> nchar(napie)
[1] 27
> toupper(napis)
[j] "WROCŁAW, \nTHE MEETING PLACENn"
> # funkcją substrO wycinamy fragment napisu
> substr(napis,10,27)
[j] "\nthe meeting place"
> D funkcją strsplitO rozbijamy napis (tutaj wektor dwóch napisów) na
listę wektorów napisów rozdzielanych określonym wzorcem
> strsplit (c(nazwa,napis)"')
ri] “Wrocław,"
f[2]l
[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ą seq(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.
> # inicjujemy wektor wartości o wskazanym typie i wskazanej długości
> (wektor * vector("integer",10)) fil 0000000000
> character(lO)
[J] MM »MI M II lin II M MM MM MW nil HM
> logical(lO)
! Cli FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Długość wektora można sprawdzić funkcją length(base). Dostęp do elementów wektora uzyskujemy z użyciem operatora [indeksy]. W tyra 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).
> t sekwencje 1:5 replikujemy trzykrotnie
> (wektor =■ rep(l:5, times=3))
Ul 1 2 3 4 5 1 2 3 4 5 1 2 3 4 S
> # sprawdźmy długość wektora
> length(wektor)
Cl] 15
> * wybierzmy elementy wektora podając ich indeksy
> wektor[c(1:3,6)]
Cl] 12 3 1