62 Łagodne wprowadzenie do R
W pliku "nazwa.pliku.z.danymi" mogą być umieszczone informacje o nazwać kolumn (zmiennych) i/lub wierszy (przypadków). Kolejne wartości w pliku rozdzielą ne mogą być różnymi znakami (najpopularniejsze separatory to przecinek, średn spacja lub tabulacja). Do odczytanie danych z pliku, w którym w pierwszej lin umieszczone są nazwy kolumn a wartości kolejnych pól rozdzielane są znakami ta bulacji można użyć polecenia:
macierz * read.table(“nazwa.pliku", header-T, sep="\t“)
y j ^ Ścieżka do pliku może być również adresem URL! Korzystając z ta-kich ścieżek możemy odczytywać dane z plików umieszczonych na innych* —\ komputerach. Przykładowe zbiory danych wykorzystywane w tej ksią
K mogą być w ten sposób bezpośrednio odczytane z Internetu.
Wartość lub wektor wartości możemy zapisać do pliku korzystając z funkcji cat(base). Domyślnie wynik tej funkcji jest wyświetlany w konsoli, ale zmienia jąc wartość argumentu file możemy zapisać wyniki do pliku. Tak to wygląda na{ przykładzie:
catluektor, file»"nazwa.pliku", append=F)
Argument append określa, czy wynik tej funkcji ma być dopisany do końca pliku. (o ile plik istnieje), czy też ten wynik ma nadpisać ewentualną zawartość wskazanego pliku. Jeżeli wskazany plik nie istnieje, wynik jest w obu przypadkach taki sam. Do zapisu danych (wektora, macierzy lub ramki danych) w formacie tabelarycznym można wykorzystać funkcję write.tableO. Poniższy przykład zapisuje dane rozdzielając kolejne elementy znakiem tabulacji.
write.table(macierz, file="nazwa.pliku", sep="\t“)
Duże i złożone obiekty lepiej przechowywać w postaci binarnej. Zapis w formacie plików binarnych umożliwia funkcja save(base). Funkcja ta zapisuje wskazany obiekt lub listę obiektów w formacie Rdata. Do takiego formatu można zapisać nie tylko liczby, ale też złożone obiekty i funkcje. Jeżeli chcemy zapisać do pliku wartość wszystkich obiektów z przestrzeni nazw, to można skorzystać z funk- ' cji save.image(base). Zapisuje ona do pliku wszystkie dostępne obiekty. Podobny;; efekt ma polecenie z menu File / Save uorkspace.
^ j / Binarna reprezentacja RData może różnić się dla różnych wersji R! Może g
________ więc się zdarzyć, że po zainstalowaniu nowej wersji R pewne pliki bi-,|
''a /■'» narne nie odczytują się prawidłowo. Niestety w tym przypadku R nie if sygnalizuje informacji o błędzie, użytkownik może być nawet nieświa-;1. domy źródła błędnych wyników. Z tego powodu, jeżeli chcemy przechowywać dane j dłużej lub chcemy przenieść je na inny komputer (gdzie może być zainstalowana I inna wersja R), to powinniśmy użyć innego formatu danych. Unikniemy dzięki temu* przykrych niespodzianek w stylu „działało i już nie działa”.
Does anyonc know sorneone working In this area in FYanot who i8 not a JARP (Just AnoŁhcr R Person)?
Jan de Leeuw fortunc(14l)
Ten rozdział poświęcony jest opisowi typów zmiennych używanych w R. Uzupełnimy tym samym podrozdział 1.5.6 opisując szczegółowiej tak typy zmiennych, jak i typowe funkcje do typowej pracy z tymi typami.
Typ czynnikowy nazywany jest też typem wyliczeniowym lub kategorycznym. Konstruktorem typu czynnikowego jest funkcja factor(base). Deklaracja tej funkcji jest następująca:
factor(x=character(), lavels=sort(uniąue.default(x), na.last=TRUE),
I labels*levels, exclude=NA, ordered=is.ordered(x))
Wartość argumentu x tej funkcji zostanie zamieniona na wartość typu czynnikowego. Jeżeli pierwszym argumentem jest zmienna typu czynnikowego, to dodatkowym efektem będzie pominięcie poziomów, które w danym wektorze nie występują.
Zmienne czynnikowe dzieli się na dwie grupy: na takie, w których poziomy nie są ze sobą w żadnej relacji porządku i na takie, w której poziomy są w pewnej | logicznej kolejności. Dla wielu zmiennych takiego porządku nie da się wprowadzić, bo jak np. określić porządek nazw państw, nazw owoców lub leków. Dla pewnych poziomów taki porządek wynika z interpretacji poziomów, np. poziomy "duży", "średni", "mały" są w pewnym, naturalnym porządku. Aby zaznaczyć, że poziomy są w takim porządku należy w funkcji f actor () zmienić argument ordered na TRUE. W rozdziale poświęconym statystyce pokażemy, że w zależności od tego, czy poziomy są uporządkowane, czy nie, możemy otrzymać inne wyniki.
Domyślnie, etykiety zostaną utworzone na podstawie konwersji elementów wejściowego wektora na typ znakowy, ale można też podać wektor etykiet, które mają być użyte jako nazwy poziomów (argument labels). Można też wskazać wartości, które mają zostać wyłączone z etapu tworzenia etykiet (argument exclude). Te wartości zostaną zamienione na NA.
> # przygotujmy testowy wektor napisów
> wektor » c("Wroclaw", "Poznan", "Wrocław", "Czaatochowa", "Wrocław",
"Wrocław")
63