92 pazuRrry
Przykłady wywołań tej funkcji znaleźć można w rozdziale 1.6.5. W poniższy^ przykładzie przedstawiamy wywołanie funkcji odczytującej dane w formacie esy funkcję odczytującą dane ze schowka systemowego (skąd one się tam wzięły? pew zostały zaznaczone w arkuszu kalkulacyjnym i wkopiowane do schowka) oraz z pliku tekstowego umieszczonego w Internecie.
# odczytujemy dane tabelaryczne z plików tekstowych dane <- read.csv2(“c:/tajneDane/raportyKGB.csv", sep=",“)
llataZakupou <- read.delim("clipboard", header=F, na.strings="brak") literki <- read.table("http://www.biecek.pl/R/literki.csv", fill=T)
2.3.1.2 write.table(utils)
Funkcja write. tableO zapisuje wartość zmiennej (atomowej, wektora, macierzy lub ramki danych) w określonym formatowaniu do pliku tekstowego. Pełna deklaracja tej funkcji jest następująca:
write. table(x, file =* , append = FALSE, quote = TRUE, sep = " "
,* eol “ "\n", na = "NA", dec = row.naines = TRUE,
col.names = TRUE, ąmethod = c("escape", "double")!
Podobnie jak w przypadku funkcji read. tableO w pakiecie utils dostępne < jeszcze dwie funkcje o identycznym działaniu, ale innej parametryzacji argumentów domyślnych (przeznaczone do zapisywania danych w formacie .csv).
— II II
write.csv(x, file - sep = write.csv2(x, file = sep <
W tabeli 2.8 przedstawiamy opis wszystkich parametrów funkcji write .tableO, opis został przygotowany na podstawie pliku pomocy dla tej funkcji.
^ j y Zapisywanie dużych obiektów typu data. framę może być czasochłon
________ Jest to spowodowane przełączaniem się ze stylem formatowania dla 1
''A. )'— dej kolejnej kolumny, która może być innego typu. Dlatego, jeżeli chce i łf szybko zapisać ramkę danych w której wszystkie wartości są tego samego typu, to warto ją wcześniej funkcją as.matrix() przekonwertować na macierz.
Poniżej przedstawiamy kilka przykładów zapisywania obiektu do pliku.
# ta instrukcja wypisze wynik na ekranie zamiast do pliku write.tablefrunif(100),"")
# ta instrukcja wpisze wektor do schowka
write.tableCl:iOÓ,"clipboard",col,names=F, row.names=F)
# ta instrukcja wpisze napis do pliku tekstowego
write.table("poniedziałek","c:/najgorszyDzienWTygodniu.txt”)
# ta instrukcja zapisze dane do pliku w formacie csv write.csv2(iris, fill="doExcela.csv")
Operacjo wejśim/wyjścin (/npittywniue i odczytywanie danych)
Tabela 2.8: Argumenty funkcji unitę.table(utils)
Obiekt do zapisania. Pole obligatoryjno. Ten obiekt to najczęściej macierz lub obiekt typu data.framę.
filo
93
Pole o wartości typu znakowego. Również obligatoryjne. Jego wartość to ścieżka do pliku, w którym mają być zapisane dane. To pole może określać również połączenie lub gniazdo, tak jak w przypadku funkcji read.tableC). Podobnie, jeżeli zamiast nazwy pliku podamy wartość "clipboard", to dane będą zapisane do schowka systemowego. Wartość spowoduje wyświetlenie obiektu na I konsoli.
ąmethod
Pole o wartości typu znakowego. Wskazuje jak znaki specjalne mają być eskejpowane. Wartość "escape" oznacza eskejpowanie w stylu C (z dodaniem backslasha), wartość "double" oznacza podwójne eskejpowanie.
sep
eol
Pole o wartości typu znakowego. Wskazany łańcuch znaków będzie traktowany jako separator kolejnych pól (separatorem nie musi być pojedynczy znak).
Pole o wartości typu znakowego. Ten łańcuch będzie wstawiany jako koniec linii. W przypadku Windows domyślne zakończenie linii to eol«"\r\n".
ąuote
Pole o wartości typu logicznego. Wartość TRUE powoduje, że pola typu factor oraz łańcuchy znaków będą otoczone znakiem (cudzysłów).
dec Pole o wartości typu znakowego. To pole określa, jaki znak ma
reprezentować kropkę dziesiętną, domyślnie jest to " . " (kropka). Jeżeli dane mają być zapisane zgodnie z polskimi standardami, to kropką dziesiętną powinien być znak ", ” (przecinek). row.name8 Wektor napisów lub wartość typu logicznego. Jeżeli jest to wektor napisów, to będzie on traktowany jak nazwy kolejnych wierszy. Jeżeli jest to wartość logiczna, to będzie ona określała, czy nazwy wierszy powinny być. zapisane, czy nie.
col. names Wektor napisów lub wartość typu logicznego. Jeżeli jest to wektor napisów, to będzie on traktowany jak nazwy kolejnych kolumn. Jeżeli jest wartość logiczna, to będzie ona określała, czy nazwy kolumn powinny być zapisane czy nic.
Korzystajftc * funkcji scan() możemy również wprowadzać dane z klawiatury. Jeżeli nie podamy żadnego argumentu dla tej funkcji, to R interaktywnie będzie pytał nos o podanie kolejnych wart-ości.
2.3.1.3 Inne funkcje dla odczytu i zapisu z plików tekstowych
i Bardziej elastyczną funkcją do odczytywania danych (niekoniecznie tabelarycznych) jest funkcja scan(utils). Jej wynikiem jest wektor odczytanych wartości, dlatego najczęściej jej wykonanie ma następującą strukturę.
[..Rektor.wartości = seanCnazwa. pliku")
Funkcja scan() ma równie wiele parametrów co read. tableO. Najprzydatniejsze z nich to what (określający typ odczytywanych wartości), sep określający separator dla kolejnych wartości oraz nmax umożliwiający określenie maksymalnej liczby ilptfości do odczytania. Poniższy przykład pozwala odczytać wektor łańcuchów liczb rozdzielonych przecinkami, bez ograniczeń na maksymalną liczbę odczytanych war-: tości.