(III):Korzystanie ze stron pomocy

Każda funkcja w R ma stronę pomocy, a każda strona pomocy ma zasadniczo tę samą strukturę. Podobnie jak wiele innych w R, strony pomocy na początku mogą być zniechęcające. Jednak strony pomocy często zawierają wiele informacji. Biorąc pod uwagę nazwę funkcji, jeśli pakiet zawierający funkcję został zainstalowany, wprowadzenie? Funkcji lub pomocy (funkcji) w wierszu polecenia R, gdzie funkcja jest nazwą funkcji, powoduje wyświetlenie strony pomocy dla funkcji. Niektóre funkcje mają tę samą stronę pomocy. Stronę pomocy można wyświetlić przy użyciu dowolnej nazwy funkcji. (c.d.n.)

(III) : Domyślne pakiety i funkcje podstawowe

Gdy użytkownik rozpoczyna sesję R, baza pakietów, zestawy danych, narzędzia, grDevices, grafika, statystyki i metody są domyślnymi pakietami do załadowania do obszaru roboczego. (Które domyślne pakiety są ładowane, można je zmienić, zmieniając defaultPackages w opcjach funtion()). Często, w zależności od potrzeb użytkownika w zakresie przetwarzania, nie są potrzebne żadne dodatkowe pakiety. Funkcje napisane w C i skompilowane podczas kompilacji R są nazywane funkcjami podstawowymi. Zgodnie ze stroną pomocy znalezioną po wprowadzeniu ?primitive po znaku zachęty R, wszystkie funkcje podstawowe znajdują się w podstawowym pakiecie, który jest zawsze ładowana. Zaletą korzystania z prymitywnych funkcji jest to, że funkcje są już skompilowane, więc funkcje działają szybciej. Funkcje prymitywne obejmują operatory i większość funkcji matematycznych, a także funkcje podstawowe dla działania i struktury R. Funkcje, które nie są podstawiwe, nazywane są niepodsatwowoymi i są zapisane w R.

(III) : Funkcje spakowane

R ma ponad 4800 pakietów, z których większość zawiera funkcje. Funkcje są sercem R i zapewniają R jego ogromną wszechstronność. Funkcje są obiektami R i mają funkcję zarówno trybową, jak i klasową. Funkcje spakowane to funkcje, które zostały utworzone jako część pakietu R. Na komputerze pakiety są przechowywane w bibliotekach i instalowane w bibliotece.

Biblioteki

Kiedy R jest początkowo instalowany, obecnie pakietybase, boot, class, cluster, codetools, compiler, datasets, foreign, graphics, grDevices, grid, KernSmooth, lattice, MASS, Matrix, methods, mgcv, nlme, nnet, parallel, rpart, spatial, splines, stats, stats4, survival, tcltk, tools, translations, i utils są również instalowane w folderze na dysku twardym. Aby zobaczyć listę domyślnych pakietów z opisami każdego pakietu i nazwą folderu pakietu, wpisz library = (lib.loc = .Library) w wierszu polecenia R. Wszelkie pakiety zainstalowane po pierwszej instalacji są instalowane w innej bibliotece i znajdują się w innym folderze, który został utworzony podczas instalacji R. Uruchamianie funkcji library() bez argumentów wyświetla osobno pakiety z opisami w dwóch bibliotekach. Aby wyświetlić wszystkie zainstalowane pakiety ze znacznie więcej informacji o pakietach, wpisz install.packages() po znaku zachęty R. Niektóre funkcje R wymagają do działania innych funkcji R. Gdy R jest uruchomiony, tylko te pakiety, które zostały załadowane do R z bibliotek, są dostępne dla programu. R podaje błąd, jeśli podjęta zostanie próba uruchomienia funkcji, w której nie załadowano niezbędnych pakietów. W komunikacie o błędzie zawarte są nazwy brakujących pakietów. Jeśli pakiet istnieje w jednej z bibliotek na komputerze, można go załadować (udostępnić), wprowadzając bibliotekę („nazwa pakietu”) w wierszu polecenia R, gdzie „nazwa pakietu” to nazwa pakietu. Jeśli pakiet nie znajduje się w jednej z bibliotek, instalacja nowych pakietów jest prosta. Po zainstalowaniu pakiet można załadować za pomocą funkcji bibliotecznej (). W dowolnym momencie wpisanie search() po znaku zachęty R daje listę pakietów załadowanych do obszaru roboczego. Aby zobaczyć funkcje (i zestawy danych) w pakiecie, wpisz bibliotekę (help = ‘package name’) w wierszu polecenia R, gdzie „package name” to nazwa pakietu. Pamiętaj, że pakiet musi być zainstalowany w bibliotece (help = „package name”), aby zwrócić zawartość pakietu. Niektóre pliki w pakiecie mogą być zestawami danych, ale w większości pakietów są to na ogół funkcje.

(III) Funkcje

Część III obejmuje podstawy funkcji. Funkcje to klasa obiektów, które są zasadniczo programami komputerowymi. Istnieją dziesiątki tysięcy funkcji spakowanych w R. Użytkownik może również rozwijać funkcje. Podczas instalacji R domyślnie instalowanych jest trzydzieści pakietów. Możesz zainstalować inne pakiety później. Na twoim komputerze funkcje są przechowywane w pakietach, które są przechowywane w bibliotekach. Opisujemy biblioteki, wymieniamy pakiety ładowane domyślnie po otwarciu R, omawiamy podstawowe funkcje, udzielamy porad na temat korzystania ze stron pomocy i dostarczamy użytecznych funkcji związanych z pakietami. Opisujemy również strukturę funkcji. Przedstawiono kilka metod, których można użyć do utworzenia funkcji i zaimportowania funkcji do obszaru roboczego R, w tym: użycie edytora wewnętrznego do R, wprowadzenie funkcji bezpośrednio w konsoli, użycie edytora zewnętrznego do R z dget () oraz wycinanie i wklejanie do R. Omawiamy, jak wywoływać funkcję, jak używać argumentów i czego oczekiwać po wynikach.

(II) : Nazwy wektorów, macierzy, tablic i list

Część na obiektach nie byłaby kompletna bez informacji na temat ustawiania nazw wektorów, macierzy, tablic i list. Nazwy wymiarów są zawsze w trybie znakowym. W przypadku obiektów o więcej niż jednym wymiarze, nazwy obiektów należą do listy trybów. Aby zobaczyć, jakie nazwy ma wektor lub przypisać nazwy do wektora, używana jest funkcja names(). Funkcja ma tylko jeden argument, obiekt. Na przykład:

> cde

[1] 21 22 23 24 25 26 27 28 29 30

> names(cde)

NULL

> names(cde) = paste(“v”,1:10,sep=””)

> cde

v1 v2 v3 v4 v5 v6 v7 v8 v9 v10

21 22 23 24 25 26 27 28 29 30

> names(cde)

[1] “v1” “v2” “v3” “v4” “v5” “v6” “v7” “v8” “v9” “v10”

> mode(names(cde))

[1] “character”

> class(names(cde))

[1] “character”

Można także przypisywać nazwy do wektorów w momencie tworzenia wektora bezpośrednio.

> a.vec = c(a=1,b=2,c=3)

> a.vec

a b c

1 2 3

Niektóre obiekty listy trybów są wektorami. W przypadku takich list przypisywanie nazw do najwyższych poziomów listy odbywa się za pomocą names () lub bezpośredniego przypisania. W przypadku macierzy istnieją trzy możliwe funkcje używane do wyświetlania nazw lub przypisywania nazw: rownames (), colnames () i dimnames (). Funkcje rownames () i colnames () mają trzy argumenty, obiekt R, do.NULL i prefiks. Argument do.NULL jest logiczny z wartością domyślną PRAWDA, która mówi funkcji, aby nic nie robiła, jeśli nazwy wierszy lub kolumn mają wartość NULL. Jeśli do.NULL ma wartość FAŁSZ, nazwy wierszy lub kolumn są indeksowane z prefiksem równym wartości prefiksu argumentu. Na przykład:

> mat

[,1] [,2]

[1,] 1 3

[2,] 2 4

> colnames(mat)

NULL

> colnames(mat) = colnames(mat, do.NULL=F, prefix=”cl”)

> mat

cl1 cl2

[1,] 1 3

[2,] 2 4

Zauważ, że prawa strona trzeciego wyrażenia zwraca tylko nazwy kolumn i nie wykonuje przypisania. Funkcja dimnames () może służyć do przypisywania nazw macierzom i tablicom. Jeśli

dimnames () działa na obiekcie, następnie nazwy wszystkich wymiarów w obiekcie są zwracane jako lista. Jeśli nazwy są przypisywane za pomocą dimnames (), obiekt po prawej stronie przypisania musi być listą tej samej liczby elementów, ponieważ istnieją wymiary w obiekcie, a każdy element ma wartość NULL lub ma taką samą długość, jak elementy w każdym wymiarze macierzy lub tablicy. Na przykład:

> a

, , d31

d21 d22

d11 1 3

d12 2 4

, , d32

d21 d22

d11 5 7

d12 6 8

> dimnames(a)

[[1]]

[1] “d11” “d12”

[[2]]

[1] “d21” “d22”

[[3]]

[1] “d31” “d32”

> dimnames(a) = list( c(“11″,”12”),c(“21″,”22”),c(“31″,”32”) )

> a

, , 31

21 22

11 1 3

12 2 4

, , 32

21 22

11 5 7

12 6 8

Więcej informacji o nazwach można znaleźć, wprowadzając  ?name ?rowname lub dimnames po znaku zachęty R.

(II)L Klasy daty i godziny: Data, POSIXct, POSIXlt i difftime

Czasami przydatna jest praca z datami i godzinami, na przykład podczas drukowania i drukowania w czasie. R zapewnia klasy dla dat oraz dla dat i godzin. Klasy to Data, POSIXct i POSIXlt. Obiekty klasy Date lub POSIXct mają tryb numeryczny a obiekty klasy  POSIXlt mają listę trybów. Spośród trzech typów funkcji typowych dla klas podanych powyżej, tylko obiekty as.Date(), as.POSIXct() i as.POSIXlt() istnieją dla obiektów daty i daty i godziny. Aby po prostu uzyskać znacznik daty i godziny w R, wpisz date() w wierszu polecenia R, który zwraca dzień tygodnia, datę i godzinę. Wynikiem jest charakter trybu i klasy. Funkcja daty systemowej Sys.Date() zwraca datę systemową i ma tryb numeryczny oraz klasę Data. Systemową funkcją daty i godziny jest Sys.time() i zwraca datę, godzinę i strefę czasową systemu i ma tryb numeryczny oraz klasy POSIXct i POSIXlt.

Daty są zwracane w formacie „Rok-Miesiąc-Dzień”, a godziny w formacie „godzina: minuta: sekunda”. Istnieje szereg funkcji, które działają na klasach daty i godziny, w tym weekdays (), które zwracają dzień tygodnia obiektów klasy Date, POSIXlt lub POSIXlt. Więcej funkcji można znaleźć na stronie pomocy dla DateTimeClasses, wprowadzając ?DateTimeClasses po znaku zachęty R. Funkcja as.Date() tworzy obiekt daty. Argumenty as.Date() to obiekt, który należy przekonwertować na datę; format, który podaje format obiektu pod względem roku, miesiąca i dnia; origin, który jest początkiem pierwszego argumentu i musi należeć do klasy Date lub POSIXct; i tz dla strefy czasowej. Jeśli użyty jest początek, konwertowanym obiektem może być dowolny obiekt numeryczny. Jeśli podano źródło, funkcja dodaje lub odejmuje wartości obiektu do lub od daty podanej przez argument pochodzenia i konwertuje wynik na datę. Przykładem odstępów tygodniowych jest

> as.Date (0: 3 * 7, „2000-1-1”)

[1] „2000-01-01” „2000-01-08” „2000-01-15” „2000-01-22”

.

Jeśli jako obiekt są używane daty, a daty nie są w formacie „rok-miesiąc-dzień”, należy podać format dat. Format jest zmienną znakową, w której miejsce roku jest o% Y, dzień o% d, a miesiąc o% m, na przykład

> as.Date („1/20/2000”, format = „% m /% d /% Y”)

[1] „2000-01-20”

Zauważ, że format jest formatem obiektu do konwersji, a nie formatem wyniku. Argument tz dotyczy strefy czasowej. Niektóre strefy czasowe są rozpoznawane, inne nie. Aby uzyskać więcej informacji, zobacz stronę pomocy as.Date(). Funkcja is.Date() sprawdza, czy obiekt jest datą i zwraca PRAWDA, jeśli tak, a FALSE w przeciwnym razie. Funkcje as.POSIXct () i as.POSIXlt () przyjmują te same argumenty co Date(), z tym wyjątkiem, że daty mogą również zawierać godzinę. Domyślny format czasu to% H:% M:% S dla godzin, minut i sekund. Na przykład:

> as.POSIXct („1/13/2000 00:30:00”, format = „% m /% d /% Y% H:% M:% S”)

[1] „2000-01-13 00:30:00 CST”

Daty, daty i godziny mogą być obsługiwane przez dodawanie i odejmowanie. Dziesiętne dla czasów są poprawnie przeliczane. Daty w funkcji Date () są zwiększane o dni; czasy w funkcji daty i czasu są zwiększane o sekundy. Przykłady:

> as.POSIXct(Sys.time())+1:4*1000

[1] “2014-01-12 15:08:03 CST” “2014-01-12 15:24:43 CST”

[3] “2014-01-12 15:41:23 CST” “2014-01-12 15:58:03 CST”

> mode(as.POSIXct(Sys.time())+1:4*1000)

[1] “numeric”

> as.POSIXlt(Sys.time())+1:4*1000

[1] “2014-01-12 15:08:34 CST” “2014-01-12 15:25:14 CST”

[3] “2014-01-12 15:41:54 CST” “2014-01-12 15:58:34 CST”

> mode(as.POSIXlt(Sys.time())+1:4*1000)

[1] “numeric”

> as.POSIXlt(Sys.time()+1:4*1000)

[1] “2014-01-12 15:09:14 CST” “2014-01-12 15:25:54 CST”

[3] “2014-01-12 15:42:34 CST” “2014-01-12 15:59:14 CST”

> mode(as.POSIXlt(Sys.time()+1:4*1000))

[1] “list”

Daty można również różnicować. Klasą różnic między datami lub datami i godzinami jest difftime. Funkcje difftime () i as.difftime () istnieją, ale nie są tutaj omówione. Przykładem różnicy dat jest

> (Sys.Date()- as.Date(“2000-1-1”))

Time difference of 5125 days

> mode(Sys.Date()- as.Date(“2000-1-1”))

[1] “numeric”

> class(Sys.Date()- as.Date(“2000-1-1”))

[1] “difftime”

Więcej informacji na temat funkcji daty i godziny można znaleźć, wprowadzając ?Date, ?as.Date, ?as.POSIXct, ?as.POSIXlt, lub ? DateTimeClasses po znaku zachęty R

(II) : Klasa data.grame: data.frame

Klasa data.frame jest macierzową klasą listy trybów. Ważne są ramki danych i sposób ich użycia. Wiele zestawów danych dostępnych dla R to ramki danych. Gdy dane są odczytywane ze źródeł zewnętrznych, wiele funkcji dokonujących odczytu tworzy ramki danych. Nauczenie się, jak pracować z ramkami danych i tworzyć je, przynosi duże korzyści. Ramki danych zawierają dane atomowe w wierszach i kolumnach. W kolumnie wszystkie dane muszą być w tym samym trybie. Tryb między kolumnami może się zmienić. Ponieważ ramki danych nie muszą mieć tylko jednego trybu, ramki danych stanowią specjalny rodzaj listy. Dostęp do elementów ramki danych można uzyskać jak macierze lub podobne listy, co czyni ramki danych bardziej uniwersalnymi niż zwykła lista. Domyślnie kolumny przyjmują nazwy, które odzwierciedlają to, co znajduje się w oryginalnych obiektach tworzących ramkę danych. Funkcje data.frame(), as.data.frame() i is.data.frame() wszystkie istnieją w R. W data.frame() obiekty, które mają być zawarte w ramce danych, są wyświetlane jako pierwsze, oddzielone przecinki. Obiektami może być dowolny obiekt w trybie atomowym lub listy składające się z kolumn atomowych lub po prostu surowe dane. Jeśli obiekt składa się z więcej niż jednej kolumny, jak niektóre macierze i listy, wówczas każda kolumna w oryginalnym obiekcie staje się kolumną w ramce danych. W przeciwnym razie każdy obiekt staje się kolumną. Jeśli kolumny miały nazwy w oryginalnych obiektach, nazwy te są domyślnie przenoszone do ramki danych. Obiekty użyte do utworzenia ramki danych nie muszą mieć tej samej długości (lub liczby wierszy dla macierzy), ale muszą być wielokrotnościami długości. Numer wierszy w ramce danych będzie równa długości najdłuższej kolumny. Dane w innych kolumnach będą cyklicznie, aż kolumna będzie miała odpowiednią liczbę wierszy. Na przykład:

> a.list

[[1]]

a1 a2

[1,] 1 7

[2,] 2 8

[3,] 3 9

[4] 4 4

[5,] 5 11

[6,] 6 12

[[2]]

[1] „abc” „cde”

> data.frame (a.list, 1: 3)

a1 a2 c..abc …. cde .. X1.3

1 1 7 abc 1

2 2 8 cde 2

3 3 9 abc 3

4 4 10 cde 1

5 5 11 abc 2

6 6 12 cde 3

Zauważ, że R utworzył nazwy dla trzeciej i czwartej kolumny, a obie trzecia i czwarta kolumna cyklicznie. Funkcja data.frame() oprócz czterech obiektów ma cztery argumenty tworzą ramkę danych. Pierwszy argument to row.names, który przypisuje nazwy do wierszy i domyślnie ma wartość NULL, co oznacza, że ​​nie przypisano żadnych nazw. Drugi argument to check.rows, który jest argumentem logicznym i sprawdza spójność długości i nazw wierszy, jeśli jest ustawiony na PRAWDA. Wartość domyślna to FAŁSZ. Trzeci argument to check.names, który jest również logiczny i który sprawdza, czy nazwy kolumn są poprawne pod względem składniowym i poprawia nazwy, które nie są. Domyślną wartością check.names jest PRAWDA. Ostatni argument to stringsAsFactors. Domyślnie data.frame() konwertuje dowolną kolumnę zawierającą dane znakowe na czynnik. Argument stringsAsFactors jest zmienną logiczną. Jeśli ustawiono na PRAWDA, czynniki są tworzone. Jeśli ustawione na FAŁSZ, kolumny znaków pozostają kolumnami znaków trybu. Rzeczywista wartość domyślna to default.stingsAsFactors(). Wartość default.stringsAsFactors() jest ustawiona w options () (rozdział 15) i domyślnie ma wartość TRUE, ale można ją zmienić w options(). Funkcja I() może być używana do konfigurowania ramek danych. Ta funkcja to inny sposób na powstrzymanie data.frame() od konwersji wektora znaków na czynniki. Również I() zapewnia, że ​​dla macierzy struktura kolumny jest zachowana w ramce danych. Obiekt w wywołaniu data.frame () zawarty w I() będzie traktowany jako jeden element ramki danych, nawet jeśli obiekt zawiera więcej niż jedną kolumnę. Obiekty zawarte w I() nie cyklicznie.

Na przykład:

> mat

     one two

row 1 1 6

row 2 2 7

row 3 3 8

row 4 4 9

row 5 5 10

> a.char

[1] “a1” “a2” “a3” “a4” “a5” “a6” “a7” “a8” “a9” “a10”

> data.frame(mat,a.char)

one two a.char

1 1 6 a1

2 2 7 a2

3 3 8 a3

4 4 9 a4

5 5 10 a5

6 1 6 a6

7 2 7 a7

8 3 8 a8

9 4 9 a9

10 5 10 a10

Warning message:

In data.frame(mat, a.char) :

row names were found from a short variable and have been discarded

> data.frame(mat,a.char)[[3]]

[1] a1 a2 a3 a4 a5 a6 a7 a8 a9 a10

Levels: a1 a10 a2 a3 a4 a5 a6 a7 a8 a9

Warning message:

In data.frame(mat, a.char) :

row names were found from a short variable and have been discarded

> data.frame(I(mat),a.char)

Error in data.frame(I(mat), a.char) :

arguments imply differing number of rows: 5, 10

> data.frame(I(mat),I(a.char[1:5]))

mat.one mat.two a.char.1.5.

row1 1 6 a1

row2 2 7 a2

row3 3 8 a3

row4 4 9 a4

row5 5 10 a5

> data.frame(I(mat),I(a.char[1:5]))[[1]]

one two

row1 1 6

row2 2 7

row3 3 8

row4 4 9

row5 5 10

> data.frame(I(mat),I(a.char[1:5]))[[2]]

[1] “a1” “a2” “a3” “a4” “a5”

Jeśli nazwy wierszy nie zostaną wprowadzone w wywołaniu data.frame(), nazwy wierszy są pobierane z pierwszej kolumny, jeśli pierwsza kolumna ma etykiety wierszy i nie wykonuje cyklu. W przeciwnym razie nazwy wierszy są ustawione na 1, 2, 3 itd. Na przykład:

> z.vec

istrue isfalse

TRUE FALSE

> mat[1:4,]

one two

row1 1 6

row2 2 7

row3 3 8

row4 4 9

> y.vec

fac1 fac2 fac3 fac4

“y1” “y2” “y3” “y4”

> data.frame(z.vec, mat[1:4,], y.vec)

z.vec one two y.vec

1 TRUE 1 6 y1

2 FALSE 2 7 y2

3 TRUE 3 8 y3

4 FALSE 4 9 y4

Warning message:

In data.frame(z.vec, mat[1:4, ], y.vec) :

row names were found from a short variable and have been discarded

> data.frame(mat[1:4,], y.vec, z.vec)

one two y.vec z.vec

row1 1 6 y1 TRUE

row2 2 7 y2 FALSE

row3 3 8 y3 TRUE

row4 4 9 y4 FALSE

Funkcja as.data.frame() próbuje przymusić obiekt do ramki danych. Jeśli obiekt jest listą złożoną z elementów atomowych lub jest obiektem trybu atomowego, wówczas as.data.frame() tworzy ramkę danych z obiektu. W przeciwnym razie data.frame() podaje błąd. Ta funkcja pobiera trzy argumenty: row.names, opcjonalny i stringSsFactors. Argumenty row.names i stringsAsFactors zachowują się tak samo, jak w data.frame(). Argument opcjonalny jest zmienną logiczną, która, jeśli jest ustawiona na PRAWDA, informuje as.data.frame(), że ustawianie nazw wierszy i konwersja nazw kolumn są opcjonalne. Jeśli ustawiono na PRAWDA i jeśli parametr row.names ma wartość NULL, nazwy wierszy są ustawione na „”. Wartość domyślna dla opcjonalnej to FAŁSZ. Funkcja is.data.frame() sprawdza, czy obiekt należy do klasy data.frame, a jeśli tak, zwraca wartość PRAWDA. W przeciwnym razie is.data.frame() zwraca FALSE. Funkcje as.matrix() i data.matrix() można wykorzystać do konwersji ramki danych na macierz. Więcej informacji na temat dwóch rodzajów konwersji znajduje się w sekcji dotyczącej klasy macierzy. Aby uzyskać więcej informacji na temat data.frame (), wpisz ?data.frame po znaku zachęty R. Aby uzyskać więcej informacji na temat as.data.frame() i is.data.frame (), wpisz ?as.data.frame po znaku zachęty R. Aby uzyskać więcej informacji o I(), wpisz ?I w wierszu polecenia R.

(II) :Klasa Faktor: factor i ordered

Klasa factor  to klasa obiektów będących na poziomie faktorów. Faktory uporządkowane należą do dwóch klas, ordered i factor. Uporządkowane faktory mają uporządkowane poziomy faktorów. Faktory i uporządkowane faktory są stosowane w modelowaniu, dla którego obecne są przynajmniej niektóre dane kategoryczne. Tryb faktorów i faktorów uporządkowanych jest liczbowy, a poziomy są powiązane z liczbami całkowitymi, które zwiększają wartość o jeden. Jednak po wyświetleniu podane są poziomy nominalne. Poziomy faktorów są zazwyczaj domyślnie uporządkowane alfabetycznie lub numerycznie, w zależności od trybu argumentu, ale strona pomocy dla czynnika ostrzega, że ​​poziomy mogą być sortowane za pomocą innej metody. Istnieją trzy funkcje: factor(), as.factor() i is.factor(), a także ordered(), as.ordered() i is.ordered(). Drugi zestaw funkcji zachowuje się tak samo jak pierwszy zestaw w odniesieniu do tworzenia i testowania obiektów czynników, dlatego omawiamy tutaj tylko pierwszy zestaw funkcji. Funkcja factor() tworzy wektor poziomów czynników i powiązaną listę poziomów. Funkcja ma sześć argumentów. Pierwszy argument to obiekt, z którego zostaną wygenerowane czynniki. Argument musi dotyczyć trybu atomowego innego niż raw. Drugi argument to levels i ustawia kolejność poziomów faktorów. Argument levels jest opcjonalny. Trzeci argument to etykiety i przypisuje etykiety do poziomów. Trzeci argument jest opcjonalny i domyślnie przyjmuje wartości elementów obiektu. Czwarty argument to wykluczenie i podaje wszelkie poziomy, które należy wykluczyć w wyniku. Wykluczone poziomy są ustawione na <NA>.Argument jest opcjonalny i domyślnie NA. Piąty argument to ordered, który jest w factor(), ale nie w ordered(). Argument ordered nakazuje factor() utworzenie factora o uporządkowanych poziomach. Funkcja factor() z ordered usatwionym na TRUE daje taki sam wynik jak funkcja ordered(). Szósty argument to nmax i jest opisany jako maksymalna liczba poziomów do użycia. Unikaj używania nmax. Argument nie wydaje się działać i może spowodować awarię R. Konwersja między czynnikami a pierwotnymi danymi jest czasami interesująca. Jeśli etykiety nie zostały przypisane w  factor(),

as.mode (levels (fac.obj)) [fac.obj],

zwraca oryginalne wartości obiektu, gdzie mode jest trybem oryginalnego obiektu, a fac.obj jest obiektem czynnikowym. Zauważ, że funkcja as.numeric (fac.obj), zwraca liczby całkowite powiązane z poziomami, nawet jeśli oryginalny obiekt nie był w trybie numerycznym. Jeśli przypisano etykiety, zwykle nie można wyodrębnić oryginalnych danych.

Oto przykład:

> a.log = c(T,T,F,T)

> a.log

[1] TRUE TRUE FALSE TRUE

> afl = factor(a.log)

> afl

[1] TRUE TRUE FALSE TRUE

Levels: FALSE TRUE

> as.logical(levels(afl))[afl]

[1] TRUE TRUE FALSE TRUE

> as.numeric(afl)

[1] 2 2 1 2

> af2 = factor(a.log, levels=c(T,F))

> af2

[1] TRUE TRUE FALSE TRUE

Levels: TRUE FALSE

> as.logical(levels(af2))[af2]

[1] TRUE TRUE FALSE TRUE

> as.numeric(af2)

[1] 1 1 2 1

> af3 =factor(a.log, labels=c(“flab”,”tlab”))

> af3

[1] tlab tlab flab tlab

Levels: flab tlab

> as.logical(levels(af3))[af3]

[1] NA NA NA NA

> as.numeric(af3)

[1] 2 2 1 2

> as.character(levels(af3))[af3]

[1] “tlab” “tlab” “flab” “tlab”

Funkcja as.factor() działa w ten sam sposób, co factor(), ale pobiera tylko jeden argument, obiekt do przekształcenia w czynnik. Funkcja is.factor() sprawdza, czy obiekt jest czynnikiem i zwraca PRAWDA, jeśli tak, a FALSE w przeciwnym razie. Istnieje również powiązana funkcja addNA(). Funkcja tworzy obiekt czynnikowy z poziomem dla brakujących danych (NA). Funkcja przyjmuje dwa argumenty. Pierwszy argument to obiekt, z którego można utworzyć obiekt czynnika klasy. Drugi argument to ifany. Argument ifany jest logiczny i przyjmuje wartość PRAWDA, jeśli dodatkowy poziom jest dodawany tylko wtedy, gdy NA są obecne, a wartość FAŁSZ, jeśli dodatkowy poziom ma być zawsze uwzględniany. Więcej informacji na temat siedmiu funkcji można znaleźć, wprowadzając współczynnik? W monicie R.

(II)Klasy szeregów czasowych: ts i mts

Klasy ts i mts odnoszą się do obiektów, które mają zdefiniowany punkt początkowy, punkt końcowy oraz częstotliwość lub okres, i dla których zakłada się, że obserwacje odbywają się w równych odstępach. Domyślną klasą szeregów czasowych dla wektora obserwacji szeregów czasowych jest ts. Dla macierzy współbieżnych obserwacji szeregów czasowych domyślnymi klasami są mts, ts i matrix. Klasę szeregów czasowych można zmienić podczas tworzenia obiektu szeregów czasowych. Obiekty szeregów czasowych można tworzyć z obiektów wektorowych, macierzowych, niektórych obiektów listy i wyrażeń – a także niektórych innych klas obiektów, takich jak współczynnik i data – za pomocą funkcji ts(). Obiekty tablicy trybów dają błąd. Wszystkie tryby atomowe są legalne jako argumenty dla funkcji ts(), z wyjątkiem trybu NULL. Dla obiektów listy, w zależności od zawartości i struktury listy, funkcja ts() utworzy, czasem dziwny, obiekt szeregów czasowych. Jeśli argumentem funkcji ts() jest ramka danych, wówczas ramka danych jest przymuszana do macierzy przez funkcję data.matrix(). Aby dowolny obiekt mógł być użyty jako argument funkcji ts(), pierwszy element obiektu musi być atomowy. W przypadku argumentów macierzowych różne szeregi czasowe przebiegają przez kolumny, a czas płynie wzdłuż wierszy. Funkcja ts() przyjmuje osiem argumentów. Pierwszym argumentem jest obiekt, który ma zostać przekształcony w szereg czasowy. Drugi argument to start i podaje wartość na początek serii. Trzeci argument to koniec i podaje wartość na końcu szeregu. Czwarty argument to częstotliwość, która podaje częstotliwość okresową dla szeregu. Piąty argument to deltat, który jest odwrotnością częstotliwości. Podana jest częstotliwość lub deltat, a nie oba. Szósty argument to ts.eps, który daje dopuszczalną tolerancję dla porównywania częstotliwości między różnymi szeregami czasowymi. Siódmym argumentem jest klasa, która mówi R, jaką klasę przypisać do obiektu szeregu czasowego. Ósmy argument to imiona i nadaje nazwy szeregom czasowym dla macierzy szeregów czasowych. Jeśli nie podano żadnych nazw, R przypisuje nazwy Serii 1, Serii 2 i tak dalej. Drugi, trzeci, czwarty i piąty argument mogą być mylące. R traktuje dane miesięczne lub kwartalne jako szczególny przypadek przy drukowaniu i drukowaniu. Inne rodzaje danych okresowych muszą być traktowane specjalnie. W przypadku danych miesięcznych ustawienie początkowe równe

start = c(‘year’, ‘month number’)

and frequency equal to

frequency = 12

or deltat equal to

deltat = 1/12,

gdzie year jest rokiem początkowym, a month number jest liczbą miesiąca początkowego (1 dla stycznia, 2 dla lutego itd.), przypisuje miesiące i lata do punktów w obiekcie, który jest konwertowany na szereg czasowy. Aby wygenerować miesięczne szeregi czasowe, dołącz end

z end= c („year”, „month number”), gdzie year jest rokiem końcowym, a month number to numer miesiąca końcowego. Funkcja ts () będzie przełączać pierwszy argument do momentu wypełnienia szeregów czasowych. W przypadku danych kwartalnych wykonaj te same kroki, ale użyj częstotliwości czterech. Na przykład:

> d.qua

[,1] [,2]

[1,] 1.53 5.48

[2,] 7.07 3.51

[3,] 5.91 4.10

[4,] 6.89 8.49

[5,] 1.51 5.33

> d.qua.ts = ts(d.qua, start=c(2000, 3), frequency=4)

> d.qua.ts

Series 1 Series 2

2000 Q3 1.53 5.48

2000 Q4 7.07 3.51

2001 Q1 5.91 4.10

2001 Q2 6.89 8.49

2001 Q3 1.51 5.33

Na bardziej ogólnym poziomie powiedzmy, że istnieją dane dzienne z jednego tygodnia i trzech dni, a tydzień początkowy to numer 32. Niech d.data będą danymi. Następnie szeregi czasowe można utworzyć w następujący sposób:

> d.data

[1] 0.908 -3.311 -0.702 -0.273 0.574 -0.428 -0.834 -0.531 -3.020 -0.060

> d.ts = ts(d.data, start=c(32,1), end=c(33, 3), frequency=7)

> d.ts

Time Series:

Start = c(32, 1)

End = c(33, 3)

Frequency = 7

[1] 0.908 -3.311 -0.702 -0.273 0.574 -0.428 -0.834 -0.531 -3.020 -0.060

> print(d.ts, calendar=T)

p1 p2 p3 p4 p5 p6 p7

32 0.908 -3.311 -0.702 -0.273 0.574 -0.428 -0.834

33 -0.531 -3.020 -0.060

Należy zauważyć, że domyślnym ustawieniem wyświuetlania szeregów czasowych nie są okresy – z wyjątkiem częstotliwości 4 i 12, dla których R zakłada, że ​​dane są miesięczne lub kwartalne. Drukowanie kropek można włączać i wyłączać za pomocą argumentu kalendarza print ().Jeśli jedna liczba zamiast dwóch zostanie użyta dla każdego początku i końca, wówczas tylko liczby (n + i / f) mogą być użyte jako punkty początkowe i końcowe, gdzie n jest liczbą całkowitą pierwszego okresu, f jest częstotliwość oraz i mogą przyjmować wartości całkowite od zera do (f-1). Ilość (n + i / f) należy pobrać do co najmniej pięciu miejsc po przecinku, jeśli wprowadzono ją ręcznie, chyba że argument ts.eps zostanie zmieniony z wartości domyślnej 1.0E-5. Wartość ts. eps jest ustawione w options(). R jest tutaj bardzo wybredny. Funkcja as.ts() próbuje zmusić obiekt do klasy ts. Obiekty, które są wektorowe – lub macierzowe – będą się zmuszać. Tablice nie, funkcje nie, nazwy nie i wywołania nie; wyrażenia i listy będą. Funkcja is.ts() sprawdza, czy obiekt jest klasy ts i zwraca PRAWDA, jeśli tak, a FALSE w przeciwnym razie. Więcej informacji na temat ts(), as.ts() i is.ts() można znaleźć, wprowadzając ?ts po znaku zachęty R.

(II) : Klasa Array: tablica

Klasa arrayy to klasa danych zorganizowana za pomocą wymiarów, takich jak wielowymiarowa tabela kontyngencji. Macierze można skonfigurować jako tablice dwuwymiarowe, a wektory można ustawić jako tablice jednowymiarowe. Oba jednak będą miały macierz klas, mimo że array() tworzy obiekty. Funkcja array() tworzy tablicę z obiektu. Funkcja przyjmuje trzy argumenty. Pierwszym argumentem jest dowolny obiekt, który można zmusić do wektora. Drugi argument to wektor, który zawiera rozmiar każdego wymiaru i ma długość równą liczbie wymiarów. Trzeci argument to lista nazw dla każdego z wymiarów i można go pominąć. Wartość domyślna to NULL. Oto przykład konfigurowania tablicy:

> b. tablica = tablica (1:12, c (2,3,2),

+ dimnames = lista (c („”, „”), c („d21”, „d22”, „d23”), NULL))

> b. tablica

,, 1

d21 d22 d23

1 3 5

2 4 6

,, 2

d21 d22 d23

7 9 11

8 10 12

.

Poza tym, że występują więcej niż dwa wymiary, array() zachowuje się tak samo jak matrix(). Funkcja as.array() próbuje przymusić obiekt do tablicy klas. Obiekt musi mieć tryby atomowe – z wyjątkiem trybu NULL – lub tryby listy lub wyrażeń. W przeciwnym razie as.array() zwraca błąd. W trybach atomowych as.array() zachowuje się jak as.matrix(). W trybach listy i wyrażeń as.array() po prostu przepuszcza obiekt, ale zmienia klasę obiektu na tablicę. Tryb się nie zmienia. Funkcja is.array() testuje obiekt, aby sprawdzić, czy klasą obiektu jest tablica. Funkcja zwraca PRAWDA, jeśli klasa jest tablicą, w przeciwnym razie FALSE. Więcej informacji na temat array(), as.array() i is.array() można znaleźć, wprowadzając ?array po znaku zachęty R.