(IV) : Funkcja Paste

Kończymy funkcją paste(). Funkcja służy do tworzenia ciągów znaków z dowolnego typu obiektu. Poza obiektami, które mają być połączone razem, które są oddzielone przecinkami, funkcja paste ma dwa argumenty, sep i collapse. Argument sep podaje wartość tego, co ma oddzielić poszczególne terminy i jest domyślnie odstępem. Argument sep musi być łańcuchem znaków lub obiektem znakowym. Aby ustawić wartość na zero, ustaw sep równe „”. Argument collapse jest również ciągiem znaków lub obiektem i służy do oddzielania wyników. Jedną z przydatnych zastosowań metody paste() jest tworzenie nazw wymiarów. Oto przykład trzech prostych zastosowań metody paste(). Drugi przykład byłby odpowiedni do tworzenia etykiet wymiarów.

> paste (“a”, 1: 3)

[1] „a 1” „a 2” „a 3”

> paste („a”, 1: 3, sep = „”)

[1] „a1” „a2” „a3”

> paste („a”, 1: 3, sep = „”, zwiń = „+”)

[1] „a1 + a2 + a3”

Więcej informacji na temat funkcji paste() można znaleźć, wpisując ?paste w wierszu polecenia R.

(IV) Kombinatoryka i ekspansja sieci

Kombinatoryka to temat dotyczący kombinacji, które można utworzyć ze zbioru wartości dyskretnych. Kombinacje to wszystkie kombinacje, które są możliwe z dyskretnego zbioru wartości dla danej liczby elementów w każdej kombinacji, w których żaden element nie jest powtarzany. Permutacje to zbiór wszystkich możliwych permutacji danego rozmiaru z dyskretnego zbioru elementów. Rozwijanie siatki polega na rozszerzaniu różnych zestawów elementów, tak aby każdy element każdego zestawu był powiązany z każdym elementem innych zestawów. Prawdopodobnie najłatwiejszym sposobem sprawdzenia, na czym polegają kombinacje, permutacje i ekspansja siatki, jest pokazanie kilku przykładów. Trzy istotne funkcje to combn(), permsn() – które są  w bibliotece prob – i expand.grid. Funkcja combn() przyjmuje argumenty x, m, FUN, simplify i … . Argument x to dowolny obiekt, który można przekształcić w wektor i jest to dyskretny zbiór, z którego tworzone są kombinacje. Argument m to liczba elementów, które należy uwzględnić w każdej kombinacji. Argument FUN jest opcjonalną funkcją do działania na elementach x. Argument simplify jest logiczny. Jeśli TRUE, zwracana jest tablica lub macierz. Jeśli FALSE, zwracana jest lista. Wartość domyślna to TRUE. Argument… zawiera argumenty dla FUN. Na przykład:

> combn(1:3,2)

[,1] [,2] [,3]

[1,] 1 1 2

[2,] 2 3 3

Zwróć uwagę, że kombinacje są w kolejnych wierszach. Funkcja permsn () znajduje się w pakiecie prob. Ponieważ pakiet nie jest jednym z pakietów instalowanych domyślnie, może być konieczne zainstalowanie pakietu. Jeśli pakiet jest zainstalowany, pakiet musi być załadowany biblioteką (prawdopodobnie)

Funkcja permsn() przyjmuje tylko dwa argumenty, x i m, które są takie, jak opisano dla combn (). Oto przykład dla permsn():

> permsn(1:3,2)

[,1] [,2] [,3] [,4] [,5] [,6]

[1,] 1 2 1 3 2 3

[2,] 2 1 3 1 3 2

Zwróć uwagę, że permutacje znajdują się w wierszach. Zauważ również, że chociaż combn() ma tylko kombinację (1,2), permsn() zawiera zarówno (1,2), jak i (2,1) i tak dalej. Funkcja permsn() zwraca macierz. Funkcja expand.grid() przyjmuje obiekty jako argumenty. Obiekty są oddzielone przecinkami i muszą mieć możliwość przekształcenia ich w wektor. Funkcja zwraca wektory skrzyżowane ze sobą w ramce danych. Na przykład:

> expand.grid(1:2,3:4,5:6)

   Var1 Var2 Var3

1 1 3 5

2 2 3 5

3 1 4 5

4 2 4 5

5 1 3 6

6 2 3 6

7 1 4 6

8 2 4 6

Tutaj kombinacje są w rzędach. Więcej informacji o combn (), permsn () i expand.grid () można znaleźć, wpisując ?combn,?prob::permsn i ?expand.grid po znaku zachęty R. Zauważ, że jeśli prob nie jest zainstalowany, drugie polecenie nie zadziała

(IV) Funkcja rep()

Funkcja rep() powtarza pierwszy argument we wzorcu określonym przez pozostałe argumenty. Pierwszym argumentem może być obiekt dowolnego typu, który można przekształcić w wektor. Pozostałe trzy argumenty to times, each i length.out. Domyślne wartości times, eachy i length.out w systemie S3 to odpowiednio 1, 1 i NA. Argument times to wektor wartości, które można przekształcić w liczbę całkowitą. Argument musi mieć jedną wartość lub mieć taką samą długość jak pierwszy argument. Jeśli argument przyjmuje jedną wartość, pierwszy argument jest powtarzany tyle razy, ile pojedyncza wartość. Jeśli argument times ma długość równą długości pierwszego argumentu, to każdy element pierwszego argumentu jest powtarzany tyle razy, ile wskazuje odpowiadający mu element argumentu times. Argument times to drugi argument funkcji rep(). Na przykład:

> rep (0,5)

[1] 0 0 0 0 0

> rep (1: 3, 5)

[1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3

> rep (1: 3, 2: 4)

[1] 1 1 2 2 2 3 3 3 3

W tym przypadku drugi argument nie jest jawnie nazywany times, ale Times niejawnie przyjmuje wartość. Argumentem każdy może być dowolny obiekt, który można przekształcić w wektor liczb całkowitych, gdzie pierwszy element jest nieujemny. Wykorzystywany jest tylko pierwszy element obiektu. Argument mówi rep(), aby za każdym razem powtarzał każdy element pierwszego argumentu. Na przykład:

> rep (1: 3, każdy = 3)

[1] 1 1 1 2 2 2 3 3 3

> rep (1: 3, each = 3, times = 2)

[1] 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3

> rep (rep (1: 3, times = 2: 4), each = 2)

[1] 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 3 3

> rep (rep (1: 3, times = 2: 4), times = 2)

[1] 1 1 2 2 2 3 3 3 3 1 1 2 2 2 3 3 3 3

Ostatnim argumentem jest length.out. Argument może przyjąć dowolną wartość, która może zostać przekształcona w wektor całkowity i dla której pierwszy element jest nieujemny. Używany jest tylko pierwszy element. Jeśli parametr length.out jest ustawiony na wartość, zwracana jest tylko liczba elementów podana przez wartość argumentu. Na przykład:

> rep (rep (1: 3, times = 2: 4), times = 2, len = 8)

[1] 1 1 2 2 2 3 3 3

Tutaj length.out jest skracany do len. Więcej informacji o rep () można znaleźć, wpisując ?rep po znaku zachęty R.

(IV) Funkcje seq() i rep()

Funkcje seq() i rep() są używane dla sekwencji i powtarzających się wzorców. W najprostszej formie użycie seq() jest tym samym, co użycie operatora dwukropka do utworzenia sekwencji. Jednak seq() może tworzyć bardziej wyrafinowane sekwencje niż operator dwukropka. Funkcja rep () powtarza pierwszy argument funkcji określoną liczbę razy, przy czym istnieją dwa możliwe sposoby wykonania powtórzenia.

Funkcja seq()

Funkcja seq() ma sześć argumentów. Pierwsze dwa argumenty są wartościami początkowymi i końcowymi sekwencji i mają nazwy from i to. Argumenty from i to mogą przyjmować wartości logiczne, liczbowe lub złożone. W przypadku wartości logicznych TRUE jest przekształcane na jeden, a FALSE na zero. W przypadku wartości złożonych część urojona jest pomijana. Obie opcje do i od są domyślnie ustawione na jeden. Trzeci argument to by. Argument by podaje wartość, o jaką należy zwiększyć sekwencję. Argument by może również przyjmować wartości logiczne, liczbowe i złożone; jednakże nie może równać się FALSE, ponieważ FALSE wymusza na zero i przez to nie może równać się zero. Argument nie musi być podzielony na różnicę między to i from równomiernie. Sekwencja zatrzyma się przy największej wartości mniejszej lub równej, jeśli to jest większa niż from. Jeśli to jest mniejsze niż from, to by musi być ujemne, a sekwencja zatrzymuje się na najmniejszej wartości większej lub równej od. Czwartym argumentem jest length.out. Domyślnie length.out ma wartość NULL. Zamiast by można użyć argumentu length.out. Argument podaje długość sekwencji do wyprowadzenia. Jeśli określono length.out, domyślnie ustawiana jest wartość (to – from) / (length.out-1). Piąty argument to along.with Argument along.with jest również używany  w miejsce by. Długość sekwencji do wyprowadzenia określana jest przez długość wzdłuż.with. Szósty  argument jest argumentem … dla wszystkich argumentów do lub z funkcji niższego poziomu używanych przez seq(). Oto kilka przykładów:

> seq (3)

[1] 1 2 3

Wprowadzenie tylko jednej wartości bez nazwy daje sekwencję od jednej do największej liczby całkowitej mniejszej lub równej wartości dla wartości dodatnich lub najmniejszej liczby całkowitej większej lub równej wartości, jeśli wartość jest ujemna.

> seq (3, 10)

[1] 3 4 5 6 7 8 9 10

Gdy dwie wartości są wprowadzane bez nazw, pierwsza jest interpretowana jako wartość od, druga jest interpretowana jako wartość do, a przez jest ustawiana jako równa jeden.

> seq (3, 10, 2)

[1] 3 5 7 9

W przypadku wprowadzenia trzech wartości bez nazw, pierwsza jest interpretowana jako wartość od, druga jest interpretowana jako wartość do, a trzecia jest interpretowana jako wartość od.

> seq (3, 10, len = 4)

[1] 3,000000 5,333333 7,666667 10,000000

Tutaj length.out jest skracany do len.

> seq (3, 10, along = c (1,2,1,2))

[1] 3,000000 5,333333 7,666667 10,000000

Tutaj, along.with jest skrócone do along.

> seq (c (1,2,1,2))

[1] 1 2 3 4

Jeśli wektor z więcej niż jednym elementem zostanie wprowadzony jako jedyny argument, utworzona zostanie sekwencja zaczynająca się od jednego, o długości równej jeden i długości równej długości wektora.

> seq (len = 4)

[1] 1 2 3 4

> seq (7, along = c (1,2,1,2))

[1] 7 8 9 10

> seq (7, len = 4)

[1] 7 8 9 10

Wpisanie length.out lub along.with samodzielnie lub z wartością from zwraca wektor rozpoczynający się z wartością from, with by równą 1 i o prawidłowej długości. W przypadku długich sekwencji dostępne są funkcje niższego poziomu, które są szybsze. Zobacz stronę pomocy dla seq (). Więcej informacji o seq () można znaleźć, wpisując ?seq w wierszu polecenia R

(IV) Ręczne wprowadzanie danych i generowanie danych za pomocą wzorców

Dane można wprowadzić ręcznie za pomocą funkcji c (), gdzie c oznacza zbieranie. Czasami potrzebne są dane z określonym wzorcem, na przykład przy ustawianiu indeksów do manipulacji macierzą lub tablicami lub jako dane wejściowe do funkcji. W języku R jest wiele funkcji, które dają wzorowe wyniki, które mogą być przydatne. Czasami dla wymiarów w wektorze, macierzy lub tablicy potrzebne są nazwy indeksowane. Funkcja paste () może służyć do tworzenia nazw indeksowanych.

Funkcja c()

Funkcja c() zbiera obiekty razem w jeden obiekt. Zebrane obiekty są oddzielane przecinkami w wywołaniu c(). Obiekty mogą być NULL, surowe, logiczne, całkowite, podwójne, ciągi znaków (które muszą być cytowane), nazwane obiekty (które muszą być atomowymi obiektami, listami lub wyrażeniami), listy i / lub wyrażenia. Obiekty mogą być również wywołaniami funkcyjnymi, które zwracają dowolną z powyższych klas. Jeśli wszystkie obiekty w wywołaniu są obiektami atomowymi, funkcja c() zbiera obiekty do wektora elementów tworzących obiekty. Klasa wektora wynikowego jest klasą najwyższego poziomu w obrębie elementów wektora, w której poziomy klas rosną w kolejności NULL, surowe, logiczne, całkowite, podwójne, zespolone i znakowe.

Oto przykład hierarchii:

> rw = as.raw(c(36, 37, 38, 39))

> rw

[1] 24 25 26 27

> c(rw, rw)

[1] 24 25 26 27 24 25 26 27

> c(rw, TRUE)

[1] TRUE TRUE TRUE TRUE TRUE

> c(rw, 40)

[1] 36 37 38 39 40

> c(rw, 40.5)

[1] 36.0 37.0 38.0 39.0 40.5

> c(rw, 1+1i)

[1] 36+0i 37+0i 38+0i 39+0i 1+1i

> c(rw, “six”)

[1] “24” “25” “26” “27” “six”

Konwersja z surowego jest automatyczna z wyjątkiem konwersji na znak, która zachowuje surowe wartości. Funkcja c() ma jeden możliwy nazwany argument, argument logiczny rekurencyjny. Wartość domyślna rekursywnego to FALSE. Jeśli recursive ma wartość TRUE, a kolekcja zawiera listę, ale nie zawiera wyrażenia, lista jest rozdzielana na najniższy poziom poszczególnych elementów na liście i zwracany jest wektor elementów atomowych. Obiekt przyjmuje klasę na najwyższym poziomie w obiekcie. Jeśli rekurencja ma wartość FALSE, wynikowy obiekt staje się listą. W hierarchii klas lista znajduje się nad klasami atomowymi, ale poniżej wyrażenia. Jeśli w wywołaniu c() zawarte jest wyrażenie, wynik ma wyrażenie klasy. Oto przykład obiektów listy klas i wyrażenia:

> a.list

[[1]]

cl1 cl2

[1,] 1 3

[2,] 2 4

[[2]]

[1] “abc” “cde”

> c(a.list, 1:2)

[[1]]

cl1 cl2

[1,] 1 3

[2,] 2 4

[[2]]

[1] “abc” “cde”

[[3]]

[1] 1

[[4]]

[1] 2

> c(a.list, 1:2, recursive=T)

[1] “1” “2” “3” “4” “abc” “cde” “1” “2”

> a.expr = expression(y ~ x, `1`)

> c(a.list, a.expr)

expression(1:4, c(“abc”, “cde”), y ~ x, `1`)

W pierwszym wywołaniu c() zwracany jest obiekt listy klas. W drugim wywołaniu zwracany jest obiekt o charakterze klasowym. W trzecim wywołaniu zwracany jest obiekt wyrażenia klasy. Nazwy można przypisać do elementów obiektu utworzonego przez c(), ustawiając elementy równe nazwie na liście – na przykład:

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

a b

1 2 3

Tutaj pierwsze dwa elementy mają przypisane nazwy a i b, podczas gdy trzeci element nie ma nazwy. Więcej informacji o c () można znaleźć, wprowadzając ?c w wierszu polecenia R.

*(IV) Funkcja sample()

Czasami potrzebna jest próba losowa zamiast liczb losowych. Funkcja sample () pobiera losową próbkę obiektów atomowych, obiektów listy lub dowolnego innego obiektu trybu, dla którego zdefiniowano długość. Funkcja sample() przyjmuje cztery argumenty. Pierwszy argument, x, to próbkowany obiekt. Jeśli x jest pojedynczą dodatnią liczbą rzeczywistą większą niż jeden, sample() próbki z sekwencji od 1 do liczby rzeczywistej zaokrąglone w dół do liczby całkowitej. Jeśli x jest obiektem, który można przekształcić w wektor lub pojedynczą liczbę dodatnią i nie podano innych argumentów, funkcja sample () zwraca permutację obiektu lub sekwencję od jednego do liczby zaokrągloną w dół do liczby całkowitej. Rozmiar drugiego argumentu to liczba elementów do próbkowania. Rozmiar argumentu może być nieujemną liczbą całkowitą lub liczbą rzeczywistą, którą można zaokrąglić w dół do nieujemnej liczby całkowitej. Trzecim argumentem jest argument logiczny replace, który mówi sample(), czy próbkować próbkować za pomocą replaceement. Wartością domyślną jest FALSE, czyli próbkowanie bez zamiany. Jeśli rozmiar jest większy niż długość x i zastąpienie ma wartość FAŁSZ, to sample() wyświetli błąd. Czwarty argument to prawda i podaje listę wag do próbkowania. Argument prawd musi mieć taką samą długość jak x, musi zawierać elementy, które można przekształcić w nieujemne elementy liczbowe i dla których co najmniej połowa wymuszonych elementów jest niezerowa. Wymuszone elementy prob nie muszą sumować się do jednego

Na przykład:

> próbka (10)

[1] 8 10 6 4 7 5 3 9 1 2

> próbka (10, 5)

[1] 3 1 6 8 9

> próbka (c (“a1”, “a2”, “a3”), 6, zamień = T)

[1] „a1” „a1” „a1” „a3” „a3” „a1”

> próbka (11:21, prob = 1: 11)

[1] 18 20 14 21 19 17 12 16 15 13 11

Więcej informacji o sample() można znaleźć, wpisując ?sample w wierszu polecenia R.

(IV) : Rozkłady prawdopodobieństwa

W przypadku rozkładów prawdopodobieństwa w pakiecie stats istnieją cztery funkcje związane z rozkładem: ddist(), pdist(), qdist() i rdist(), gdzie dist opisuje rozkład. Na przykład dla rozkładu normalnego dist równa się normie. Nie wszystkie dystrybucje mają wszystkie cztery. Pierwsza funkcja to funkcja gęstości. Funkcja ddist() podaje wysokości funkcji gęstości prawdopodobieństwa przy określonych wartościach wektora liczb. Druga funkcja dotyczy skumulowanego prawdopodobieństwa. Funkcja pdist() domyślnie daje obszary pod funkcją gęstości prawdopodobieństwa po lewej stronie określonych wartości wektora liczb. Trzecia funkcja dotyczy kwantyli. Funkcja qdist() domyślnie podaje wartości w rzeczywistej linii, dla których obszary po lewej stronie wartości są równe wartościom określonego wektora prawdopodobieństwa. Czwartą funkcją jest generator liczb losowych. Funkcja rdist() generuje zmienne pseudolosowe z rozkładu. Dla wszystkich funkcji wektory mogą być wektorami o długości jeden. Te cztery funkcje mają argumenty określające standardowe parametry danej dystrybucji, z których wiele ma wartości domyślne. Na przykład dla rozkładu normalnego argumentami są średnia i sd i są one domyślnie ustawione na 0 i 1. Obie zmienne mean i sd można wprowadzić jako wektory i będą się zmieniać. Wektory muszą być numeryczne lub logiczne. Wektory logiczne są przekształcane na numeryczne. Rozkłady w statystykach pakietów są podane w Tabeli wraz z argumentami parametrów dystrybucji

Przedrostki to d, p, q, r. Funkcja multinom ma tylko d i r. Funkcja tukey ma tylko p i q. Funkcja birthday ma tylko p i q i nie ma argumentu log.p.

Dla wszystkich czterech funkcji pierwszy argument jest wymagany i nie ma wartości domyślnej. W przypadku funkcji gęstości pierwszy argument x jest wektorem liczb rzeczywistych lub wartości, które można przekształcić w liczby rzeczywiste. W przypadku skumulowanych funkcji prawdopodobieństwa pierwszy argument q jest również wektorem liczb rzeczywistych lub wartości, które można przekształcić w liczby rzeczywiste. W przypadku funkcji kwantylowych pierwszy argument p jest wektorem prawdopodobieństw lub wartości, które można przekształcić do wartości od zera do jednego włącznie. W przypadku generatorów liczb losowych pierwszy argument n (nn dla rozkładu hipergeometrycznego, rangi znaku i rozkładu Wilcoxa) jest dodatnią liczbą całkowitą lub wartością, którą można przekształcić w liczbę całkowitą, która mówi R, ile liczb ma wygenerować. Ogólnie, w przypadku funkcji gęstości, jeśli wartości pierwszego argumentu mają być traktowane jako logi wartości będących przedmiotem zainteresowania, logiczny argument log jest ustawiany na PRAWDA. W przypadku funkcji prawdopodobieństwa i kwantyli logiczny argument log.p jest ustawiany na wartość true, jeśli wartości odpowiadające prawdopodobieństwom są wprowadzane lub wyprowadzane jako dzienniki prawdopodobieństw. Ogólnie rzecz biorąc, w przypadku skumulowanego prawdopodobieństwa i funkcji kwantylowych, to, czy użyć górnego, czy dolnego końca rozkładu, można ustawić za pomocą argumentu logicznego lower.tail. Dolny ogon jest ustawiony domyślnie. Dolne ogony to obszar pod funkcją rozkładu dla wartości mniejszych lub równych wartościom pierwszego argumentu, a górne ogony to obszar pod funkcją rozkładu dla wartości większych niż wartości pierwszego argumentu. Ogólnie parametry mogą być wprowadzane jako wektory i będą się zmieniać. Jeśli zostanie wprowadzona nieprawidłowa wartość parametru, funkcja zwróci błąd. Więcej informacji o danym rozkładzie prawdopodobieństwa można znaleźć, wpisując ?ddist w wierszu polecenia R, gdzie dist jest nazwą rozkładu z tabeli, z wyjątkiem dystrybucji tukey i birthday, dla których działa ?pdist.

(IV) : Zbiory danych R

R zawiera szereg zestawów danych. Niektóre z tych zestawów danych znajdują się w zestawach danych pakietu, który jest jednym z pakietów instalowanych domyślnie w R. Aby załadować zestawy danych z zestawów danych pakietu, w wierszu poleceń R wprowadź bibliotekę (zestawy danych). Aby zobaczyć zestawy danych w zestawach danych, wprowadź library(help = datasets) po znaku zachęty R. Po załadowaniu biblioteki zestawy danych w zestawach danych są dostępne po wprowadzeniu nazwy zestawu danych. W przypadku każdej biblioteki, po załadowaniu biblioteki, zestawy danych w bibliotece są dostępne jak każdy inny obiekt w obszarze roboczym. Pakiety danych niekoniecznie są danymi. ramki, ale wiele jest.

Inne funkcje importowania plików

Inne funkcje importowania plików nie zostaną tutaj omówione. Wyszukaj read, przez wpisanie ?read w wierszu polecenia R, co daje wiele funkcji, które odczytują przestrzeń roboczą języka R. W przypadku arkuszy kalkulacyjnych Excel, autorzy języka R zalecają wyeksportowanie arkusza kalkulacyjnego Excela do pliku .csv (wartości rozdzielane przecinkami) i odczytanie pliku .csv do R. Istnieje kilka funkcji do czytania arkuszy kalkulacyjnych Excel, ale autorzy języka R twierdzą, że konwersja jest pełna pułapek.

Rozkłady prawdopodobieństwa i funkcja sample()

R ma bogactwo generatorów liczb losowych. Generatory liczb losowych są jedną z czterech funkcji powiązanych z rozkładami prawdopodobieństwa, z których wszystkie zostały tutaj omówione. Funkcje związane z rozkładami prawdopodobieństwa mają przeważnie tę samą postać. Wiele dystrybucji można znaleźć, wprowadzając  ?distributuions po znaku zachęty R. Wpisanie „distributions” po znaku zachęty R powoduje wyświetlenie dystrybucji – i generatorów – w statystykach pakietu.

(IV) : Funkcje read.table(), read.csv() i read.delim()

Trzy funkcje read.table(), read.csv() i read.delim() są zasadniczo tą samą funkcją, różniącą się jedynie domyślnymi wartościami argumentu sep i nagłówkiem argumentu. Podobnie jak w przypadku funkcji scan(), argument sep podaje symbol używany do oddzielania wartości danych w pliku i może być dowolną wartością jednobajtową. Nagłówek argumentu przyjmuje wartości logiczne i mówi funkcji, czy odczytać nagłówek z pierwszej linii, czy nie. Te trzy funkcje importują dane z pliku, w którym plik jest w postaci macierzy lub z wartości argumentu tekstowego. Jeśli dane pochodzą z pliku, lokalizacja pliku jest wprowadzana jako pierwsza w wywołaniu w cudzysłowie. Lokalizacja pliku może być względna w stosunku do obszaru roboczego lub bezwzględna, w tym adresy URL. Aby wyszukać plik, wprowadź file.choose() jako nazwę w cudzysłowie, na przykład read.table (file.choose()). Oto przykład z cytowaną nazwą:

> read.table(“test2.txt”)

V1 V2 V3 V4

1 one 3 5 7

2 two 4 6 8

Zauważ, że kolumny nie muszą być w tym samym trybie. Tutaj plik test2.txt zawiera dane znakowe i numeryczne i znajduje się w tym samym folderze co obszar roboczy języka R. Jeśli nie wszystkie wiersze w pliku mają taką samą długość, domyślnie funkcja zwróci błąd. Argument fill jest argumentem logicznym i mówi R, aby wypełnił wiersze, które mają mniej elementów niż inne wiersze. Na przykład:

> read.table(“test4.txt”, fill=T)

V1 V2 V3 V4

1 one 3 5 7

2 two 4 6 NA

Tutaj test4.txt brakuje ostatniego elementu drugiego wiersza. R wypełnia element NA. Jeśli tekst argumentu jest używany do wejścia do tabeli, koniec wiersza jest oznaczony \ n. Na przykład:

> read.table(text=”1 2 3 4 \n 2 3 4 5″)

V1 V2 V3 V4

1 1 2 3 4

2 2 3 4 5

Dla read.table() domyślną wartością sep jest biały znak, a domyślną wartością nagłówka jest FALSE. Dla read.csv() domyślną wartością sep jest przecinek, a domyślną wartością nagłówka jest TRUE. Dla read.delim() domyślną wartością sep jest tabulator – który w R jest wprowadzany jako \ t – a domyślną wartością nagłówka jest PRAWDA. (Istnieją dwie inne powiązane funkcje, read.csv2 () i read.delim2 (), które są przeznaczone do użytku w Europie i mają dec, styl punktu dziesiętnego, ustawiony na “, ” i, dla read.csv2( ), zestaw sep równy;.) Trzy funkcje tworzą ramkę danych z danych, więc tryby elementów wystarczy zachować spójność w kolumnach. Jeśli kolumna zawiera dane znakowe, to domyślnie kolumna jest konwertowana na współczynnik. Ustawienie argumentu as.is na TRUE spowoduje konwersję na znak. Na przykład:

> read.table(“test3.txt”, sep=”,”)

V1 V2 V3 V4

1 one 1 3 4

2 1 four 3 2

> class(read.table(“test3.txt”, sep=”,”)[,1])

[1] “factor”

> class(read.table(“test3.txt”, sep=”,”)[,3])

[1] “integer”

> read.table(“test3.txt”, sep=”,”, as.is=T)

V1 V2 V3 V4

1 one 1 3 4

2 1 four 3 2

> class(read.table(“test.txt3″, sep=”,”, as.is=T)[,1])

[1] “character”

> class(read.table(“test.txt3″, sep=”,”, as.is=T)[,3])

[1] “integer”

Możesz zobaczyć różnicę między brakiem ustawienia as.is a ustawieniem as.is na TRUE. Plik test3.txt jest plikiem w tym samym folderze co obszar roboczy, ma postać macierzową i zawiera dane zarówno w postaci znaków, jak i liczb całkowitych. Te trzy funkcje mogą odczytywać niektóre typy danych atomowych: logiczne, numeryczne, złożone i znakowe. Ze strony pomocy języka R dla trzech funkcji, R odczytuje dane jako dane znakowe, a następnie konwertuje ze znaku na jedną z klas logicznych, całkowitych, numerycznych, zespolonych lub współczynników. Jak wspomniano powyżej, jeśli as.is ma wartość TRUE, kolumny zawierające dane znakowe nie są konwertowane na współczynniki, ale zachowują znak klasy. Argument as.is można również wprowadzić jako wektor logiczny z wartością dla każdej kolumny. Można również wprowadzić krótszy wektor, z wartościami cyklicznymi w kolumnach. Argument colClasses ręcznie ustawia klasę każdej kolumny i może być używany zamiast as.is, aby utrzymać kolumnę w trybie znakowym. Możliwe wartości klas kolumn to NA, NULL, logiczne, całkowite, numeryczne, zespolone, nieprzetworzone, znakowe, współczynniki, Date lub POSIXct. Wartości są cytowane, z wyjątkiem NA i NULL, i są wprowadzane jako wektor. Wartości będą się zmieniać. Jeśli wartość to NA, nastąpi normalna konwersja. W przeciwnym razie, jeśli to możliwe, elementy kolumny są przekształcane do klasy wymienionej dla kolumny. Na przykład:

> read.table(“test2.txt”, colClasses=c(“character”,”factor”,NA,NA))

V1 V2 V3 V4

1 one 3 5 7

2 two 4 6 8

> class(read.table(“test2.txt”, colClasses=c(“character”,”factor”,NA,NA))

[,1])

[1] “character”

> class(read.table(“test2.txt”, colClasses=c(“character”,”factor”,NA,NA))

[,2])

[1] “factor”

> class(read.table(“test2.txt”, colClasses=c(“character”,”factor”,NA,NA))

[,3])

[1] “integer”

Argumenty row.names i col.names służą do nadawania nazw wierszom i kolumnom data.frame.

W przypadku row.names argumentem może być wektor znakowy o długości równej liczbie wierszy w data.frame; argument może być liczbą całkowitą określającą, która kolumna w data.frame ma być używana jako nazwy wierszy; lub argument może być wartością znakową zawierającą nazwę kolumny, która ma być używana jako nazwy wierszy. Nazwy wierszy nie zmieniają się. W przypadku nazw kolumn argumentem jest wektor znakowy nazw kolumn. Wektor musi mieć taką samą długość, jak liczba kolumn. Jeśli nazwy kolumn nie są określone, a nagłówek ma wartość FALSE, wówczas kolumny otrzymują nazwy V1, V2,…, Vn, gdzie n to numer ostatniej kolumny. Jeśli nagłówek ma wartość TRUE, a pierwsza kolumna nie ma nazwy, podczas gdy reszta kolumn ma, to R ustawia pierwszą kolumnę jako nazwy wierszy. Oto kilka przykładów:

Do macierzy

który jest plikiem test5.txt, przykładem jest

> read.table(“test5.txt”, header=T)

c1 c2 c3

one 3 5 7

two 4 6 8

Zauważ, że nagłówek ma wartość PRAWDA, aw pierwszej kolumnie jest o jeden wiersz mniej. W przypadku macierzy składającej się z dwóch drugich wierszy test5.txt, zwanych test6.txt, mamy następujący przykład:

> read.table(“test6.txt”, col.names=c(“c1″,”c2″,”c3″,”c4”), row.names=2)

c1 c3 c4

3 one 5 7

4 two 6 8

Cztery nazwy są przypisane do czterech kolumn, a następnie druga kolumna jest używana do nazw wierszy, podczas gdy inne kolumny zachowują przypisane nazwy. Istnieje kilka innych argumentów dla funkcji read.table (), read.csv () i read.delim (). Pełny opis funkcji można znaleźć, wpisując? Read.table w wierszu polecenia R.

(IV) : Odczytywanie danych do R, w tym zbiory danych R

Istnieje wiele funkcji języka R, które wczytują dane do R. Najpopularniejsze z nich to scan() do odczytu danych z danego trybu oraz read.table() i read.csv() do odczytu danych z macierzowej tabeli strukturalnej. Niektóre z bardziej egzotycznych to read.fortran() do odczytu danych zakodowanych w formacie FORTRAN, read.fwf() do czytania tabel w formacie o stałej szerokości, read.xls() dla arkuszy kalkulacyjnych Excel (twórcy R odradzają czytanie Excel bezpośrednio, ale zapewniają pewne funkcje do tego) i read.delim() dla kolumn oddzielonych tabulatorami.

Funkcja scan()

Funkcja scan() importuje dane z pliku wiersz po wierszu, albo z wartości do argumentu tekstowego, albo bezpośrednio z konsoli. Aby zaimportować plik, wiersze nie muszą mieć tej samej długości. Funkcja odczytuje dane z trybów logicznych, numerycznych, zespolonych, znakowych, surowych i listowych. Dla wszystkich trybów z wyjątkiem listy wszystkie dane muszą być czytelny jako tryb. Funkcja scan () jest najczęściej używana do odczytu pliku zewnętrznego. Odwołanie do pliku jest pierwsze w wywołaniu i musi być zawarte w cudzysłowie. Odniesienie może odnosić się do położenia obszaru roboczego lub do położenia bezwzględnego – w tym adresów URL. Przykładem jest

> scan(“test.txt”)

Read 7 items

[1] 1 3 5 7 1 4 6

gdzie test.txt to plik zawierający siedem cyfr w dwóch wierszach. Aby wyszukać plik, wprowadź file.choose() dla cytowanego odniesienia do pliku, czyli scan (file.choose()). Funkcja może również służyć do wczytywania danych w konsoli, co odbywa się poprzez ustawienie danych równych argumentowi zwanemu tekstem, gdzie dane są w cudzysłowie. Na przykład:

> scan(text = “1 2 3 4”)

Read 4 items

[1] 1 2 3 4

Dane można również wczytać bezpośrednio z konsoli, ustawiając plik na „”. Na przykład:

> scan(“”)

1: 1

2: 4

3: 9

4: 3

5:

Read 4 items

[1] 1 4 9 3

Tutaj R wskazuje punkt danych z numerem punktu, po którym następuje dwukropek. Aby przestać wprowadzać dane, użyj control-z w systemie Windows i control-d w systemie Linux lub wprowadź pusty wiersz, naciskając klawisz Return (enter). Jeśli tryb wprowadzanych danych nie jest numeryczny, argument jaki musi być zawarty w wywołaniu scan (). Argument what jest ustawiony na mode(), gdzie tryb jest trybem danych. Na przykład:

> scan(“test.txt”, what=complex())

Read 7 items

[1] 1+0i 3+0i 5+0i 7+0i 1+0i 4+0i 6+0i

który odczytuje złożone dane z zewnętrznego pliku test.txt. Jeśli danych w pliku nie można odczytać w trybie, funkcja scan() zwraca błąd. Funkcja scan() ma również argument sep, który informuje funkcję scan() o separatorze między wartościami w pliku zewnętrznym lub w wartości tekstowej. Domyślnie separatorem jest biały znak. Argument sep może być ustawiony na dowolną jednobajtową wartość, którą R może odczytać. W wywołaniu funkcji scan() wartość sep jest umieszczana w cudzysłowie. Na przykład:

> scan(text = “1, 2, 3, 4″, sep=”,”)

Read 4 items

[1] 1 2 3 4

Tutaj przecinek jest używany jako separator między wartościami danych. Jeśli dwa oddzielające symbole w wywołaniu scan() nie mają wartości między nimi, to domyślnie wartość jest ustawiona na NA. Na przykład:

> scan(text = “1, 2, 3,, 4″, sep=”,”)

Read 5 items

[1] 1 2 3 NA 4

W przypadku danych z wierszami nagłówka argument skip nakazuje funkcji scan() pominięcie wierszy przed odczytaniem danych. Wartość skip mówi scan(), ile linii ma zostać pominiętych i może mieć dowolny tryb atomowy. Wartość jest przekształcana w liczbę całkowitą, jeśli to możliwe, lub interpretowana jako zero. Jeśli skip jest równe zero, żadne linie nie są pomijane. Aby odczytać linię nagłówka, argument nlines nakazuje funkcji scan () odczytanie wierszy do wartości nlines włącznie. Podobnie jak skip, nlines może mieć dowolny tryb atomowy, a funkcja scan() przekształca wartość na liczbę całkowitą. Jeśli nlines ma wartość zero, czytane są wszystkie wiersze. Funkcja scan() zwraca wektor. Aby utworzyć macierz lub tablicę, wywołanie scan() może być częścią wywołania matrix() lub array(). Na przykład:

> matrix(scan( text=”1 2 3 4 5 6 7 8 9 10″ ), 2, 5, byrow=T)

Read 10 items

[,1] [,2] [,3] [,4] [,5]

[1,] 1 2 3 4 5

[2,] 6 7 8 9 10

Istnieje kilka innych argumentów funkcji scan (), które wykonują takie czynności, jak ograniczanie liczby odczytywanych punktów danych, wypełnianie wierszy niekompletnych danych lub przekazanie funkcji scan () stylu przecinka dziesiętnego w danych. Więcej informacji można znaleźć, wpisując ?scan po znaku zachęty R