102 pmcuRtry
Nie wszystkie urządzenia i protokoły są dostępne pod każdym systemem <jr racyjnym. Aby sprawdzić, czy konkretny protokół lub urządzenie graficzne jest < stępne możemy posłużyć się funkcją capabilities (base). Poniżej przykład jej i wołania
> capabilitiesO
jpeg |
png |
tcltk |
XII http/ftp |
sockets |
libxral |
TRUE |
TRUE |
TRUE |
FALSE TRUE |
TRUE |
TRUE |
fifo |
cledit |
iconv |
NLS profmem | ||
FALSE |
TRUE |
TRUE |
TRUE FALSE |
Tabela 2.11: Lista funkcji do operacji na źródłach danych (plikach, kolejkach i gni i połączeniach
file(base) |
Do nawiązywania połączenia z plikami na lokalnych dyskach, wskazywanych poprzez adres URL lub jeden z dwóch przedefiniowanych połączeń stdin (interaktywne odczytywanie danych z konsoli) lub clipboard . (odczytywanie danych ze schowka systemowego). |
url(base) |
Do nawiązywania połączenia z plikami poprzez adres URL. Można korzystać z protokołów http: //, ftp: // oraz file://. |
gzfile(base) |
Do nawiązywania połączenia z plikami spakowanymi algorytmem gzip (tej funkcji można również użyć do plików niespakowanych). |
bzfile(base) |
Do nawiązywania połączenia z plikami spakowanymi algorytmem bzip2 (tej funkcji można również do plików niespakowanych). |
unz(base) |
Do nawiązywania połączenia (wyłącznie w trybie czytanie) z plikiem archiwum w formacie zip. |
pipę(base) |
Do nawiązywania połączenia (również z innymi pro-, gramami) poprzez mechanizm pipe’ów. |
fifo(base) |
Do nawiązywania połączenie poprzez kolejkę FIFO (Windows nie obsługuje kolejek FIFO). |
socketConnection(base) |
Do nawiązywania połączenie poprzez mechanizm gniazd. |
seek(base) readLines(base) |
Pozwala na zmianę aktualnej pozycji w połączeniu. ; Dzięki temu możemy wybiórczo odczytywać z dowol-nych wskazanych miejsc połączenia. Odczytuje do n (domyślnie n=-l czyli wszystkie) linie z połączenia (traktowanego jako plik tekstowy). Dodatkowymi argumentami można określić sposób kodo- 1 waiua znaków. Wynikiem tej funkcji jest wektor napisów. - |
readBin(base) |
Odczytuje do n (domyślnie n=-l czyli wszystkie) rekordów z połączenia. |
writoLlnea(base) |
Zapisuje do połączenia wskazany wektor napisów. |
urlteBln(base) |
Zapisuje do połączenia wskazany wektor rekordów. |
Ol wiar ja wtjdria/ wyjścia (zapisywanie i odczytywanie danych)
%
Środowisko R przechowuje w pamięci wszystkie dane, na których operuje. To rozwiązanie świetnie się sprawdza, jeżeli zbiory na których operujemy nie są bardzo I duże. Jednak w pewnych zagadnieniach nie jesteśmy nawet w stanie wczytać do pamięci całego zbioru danych, nie mówiąc już o manipulowaniu tymi danymi. W tej sytuacji warto dane przechowywać w bazie danych a do pamięci wczytywać tylko te fragmenty, na których chcemy wykonać jakąś operację.
Nie ma co się tutaj rozwodzić nad zaletami baz danych (w szczególności będziemy mówić o relacyjnych bazach danych), ponieważ operując na dużych zbiorach danych (dużych, czyli ponad 10 milionów wierszy) nie mamy praktycznie wyboru i musimy z nich korzystać. Nawet dla zbiorów danych o średnich rozmiarach, korzystając z baz danych zyskujemy na możliwości łatwego współdzielenia danych z innymi aplikacja-nii/użytkownikami. Poniżej przedstawiamy dwa przykłady komunikacji R z bazami danych z wykorzystaniem pakietów RODBC i RMySCJL. Pierwszy z pakietów pozwala na łączenie się z różnymi bazami danych poprzez sterowniki ODBC, drugi pakiet jest dedykowany do korzystania z bazy danych MySQL.
> półleżenie ODBC musi być przygotowane w systemie ,library( "RODBC")
■ t jeżeli chcemy wybrać połączenie interaktywnie z GUI Wmdowsowego połączenie <- odbcDriverConnect("") k# Otwieramy połączenie z wskazaną bazą danych HySQL połączenie <- odbcConnectObaza”, uid="użytkownik" , case="tolower")
# zobaczmy jakie są tabele w tej bazie danych, i odczytajmy dane z tabeli ■JŚi'";. tabelaA
śąlTables(połączenie)
sąlOuery(połączenie, "select 1 from tabelaA") ćlose(połączenie)
Możemy też połączyć się z bazą danych, używając biblioteki RMySQL. library (RMySCJL)
* Otwieramy połączenie z wskazaną bazą danych MySQl
połączenie <- dbConnect(MySQL(), user”"uzytkownik", dbnajne»“baza" , host"" 0-:' host", password1“haslo")
ł# odczytajmy wszystkie wiersze z tabeli tabelaA ?apyt <- dbSendCJuery(połączenie, "SELECT « FROM tabelaA")
. dane <- f et ch (zapyt, n - -1)
ii' Używając funkcji odbcConnectAccess(RODBC) mona połączyć się z Accessową ■: bazą danych a używając funkcji odbcConnectExcel (RODBC) można na plikach Exce-: la wykonywać operacje jak na bazie danych.
łączymy się 1 bazą Access - library("RODBC")
ÓPpłacżenie <- odbcConnectAccessOplik.mdb", uid»"uzytkovnik")
■ A . .. operacje na danych