Interpreter i konsola

Jak wspomniałem wcześniej, R jest językiem interpretowanym. Po wprowadzeniu wyrażenia do konsoli R lub wykonaniu skryptu R na terminalu systemu operacyjnego program zwany interpreter analizuje i wykonuje kod. Inne przykłady języków interpretowanych to Lisp, Python i JavaScript. W przeciwieństwie do C, C++ i Java, R nie wymaga jawnej kompilacji programów przed ich wykonaniem. Wszystkie programy języka R składają się z serii wyrażeń. Interpreter zaczyna od przeanalizowania każdego wyrażenia, podstawienia obiektów za symbole tam, gdzie to konieczne, ich oceny i na koniec zwrócenia wynikowych obiektów. W następnych sekcjach zdefiniujemy każde z tych pojęć, ale należy pamiętać, że jest to podstawowy proces, przez który przechodzą wszystkie programy języka R. Konsola R jest najważniejszym narzędziem do korzystania z języka R i można ją traktować jako element otaczający interpretera. Konsola to narzędzie, które umożliwia wpisywanie wyrażeń bezpośrednio w języku R i sprawdzanie, jak odpowiada. Interpreter odczyta wyrażenia i odpowie, przedstawiając wynik lub komunikat o błędzie, jeśli taki wystąpił. Kiedy wykonujesz wyrażenia przez konsolę, interpreter automatycznie przekaże obiekty do funkcji print(), dlatego możesz zobaczyć wynik wydrukowany poniżej twoich wyrażeń. Jeśli wcześniej używałeś wiersza poleceń (na przykład bash w Linuksie w macOS lub cmd.exe w Windows) lub języka z interaktywnym interpreterem, takim jak Lisp, Python lub JavaScript, konsola powinna wyglądać znajomo, ponieważ jest po prostu interfejs wiersza poleceń. Jeśli nie, nie martw się. Interfejsy wiersza poleceń są prostymi w użyciu narzędziami. Są to programy, które otrzymują kod i zwracają obiekty, których wydrukowane reprezentacje widzisz poniżej wykonywanego kodu. Po uruchomieniu R zobaczysz okno z konsolą R. Wewnątrz konsoli zobaczysz komunikat podobny do pokazanego poniżej. Ten komunikat wyświetla podstawowe informacje, w tym wersję R, którą używasz, informacje o licencji, przypomnienia o tym, jak uzyskać pomoc, oraz wiersz polecenia.

Należy zauważyć, że domyślnie R wyświetli znak większości (>) na początku ostatniego wiersza konsoli, sygnalizując, że jest gotowy do odbierania poleceń. Ponieważ R prosi o wpisanie czegoś, nazywa się to wierszem polecenia. Kiedy zobaczysz symbol większości, R może otrzymać więcej wyrażeń jako dane wejściowe. Jeśli tego nie robisz, jest to prawdopodobnie spowodowane tym, że R jest zajęty przetwarzaniem czegoś, co wysłałeś i przed wysłaniem czegoś innego powinieneś poczekać, aż się zakończy. W większości przypadków w tej książce w ogóle unikniemy wyświetlania takich poleceń, ponieważ możesz wpisywać kod do pliku kodu źródłowego lub bezpośrednio do konsoli, ale jeśli go wprowadzimy, upewnij się, że nie jawnie wpisz to. Na przykład, jeśli chcesz replikować następujący fragment kodu, wystarczy wpisać w konsoli tylko 1 + 2 i nacisnąć klawisz Enter. Kiedy to zrobisz, zobaczysz [1] 3, które jest wynikiem otrzymanym od R. Śmiało i wykonaj różne wyrażenia arytmetyczne, aby poczuć konsolę:

> 1 + 2

[1] 3

Zwróć uwagę na [1], który towarzyszy każdej zwracanej wartości. Jest tam, ponieważ wynik jest w rzeczywistości wektorem (uporządkowaną kolekcją). [1] oznacza, że ​​indeks pierwszego elementu wyświetlanego w tym wierszu to 1 (w tym przypadku nasz wynikowy wektor ma jedną wartość wewnątrz). Na koniec powinieneś wiedzieć, że konsola zapewnia narzędzia do przeglądania poprzednich poleceń. Prawdopodobnie okaże się, że klawisze strzałek w górę iw dół są najbardziej przydatne. Możesz przewijać poprzednie polecenia, naciskając je. Strzałka w górę pozwala spojrzeć na wcześniejsze polecenia, a strzałka w dół – na późniejsze polecenia. Jeśli chcesz powtórzyć poprzednie polecenie z niewielką zmianą lub jeśli chcesz poprawić błąd, możesz to łatwo zrobić za pomocą tych klawiszy.

Porównanie R z innym oprogramowaniem

Moim zamiarem w tej sekcji nie jest zapewnienie kompleksowego porównania między R i innym oprogramowaniem, ale po prostu wskazanie kilku najbardziej zauważalnych funkcji R. Jeśli możesz, zachęcam do samodzielnego przetestowania innego oprogramowania, abyś wiedział z pierwszej ręki, jakie może być najlepsze narzędzie do wykonywanej pracy. Najbardziej zauważalną cechą języka R w porównaniu z innymi programami statystycznymi, takimi jak SAS, Stata, SPSS, a nawet Python, jest bardzo duża liczba dostępnych pakietów. W sieci The Comprehensive R Archive Network (CRAN) opublikowano prawie 12 000 pakietów i nie obejmuje to pakietów opublikowanych w innych miejscach, takich jak repozytoria Git. Dzięki temu R może mieć bardzo dużą społeczność i ogromną liczbę narzędzi do analizy danych w takich obszarach, jak finanse, matematyka, uczenie maszynowe, obliczenia o wysokiej wydajności i wiele innych. Z wyjątkiem Pythona, R ma znacznie więcej możliwości programistycznych niż SAS, Stata, SPSS, a pod pewnymi względami nawet większe niż Python (na przykład w R można używać różnych modeli obiektowych). Jednak wydajne i efektywne użycie języka R wymaga użycia kodu, co dla niektórych osób oznacza stromą krzywą uczenia się, podczas gdy Stata i SPSS mają graficzne interfejsy użytkownika, które prowadzą użytkownika przez wiele zadań za pomocą kreatorów typu „wskaż i kliknij”. Moim zdaniem to trzymanie się za rękę, choć przyjemne dla początkujących, szybko staje się ważnym ograniczeniem dla osób pragnących stać się średnio zaawansowanymi i zaawansowanymi użytkownikami, i właśnie w tym miejscu naprawdę widać zalety programowania. R ma jeden z najlepszych systemów graficznych spośród wszystkich istniejących programów. Najpopularniejszym pakietem do tworzenia wykresów w R, z którego będziemy intensywnie korzystać, jest pakiet ggplot2, ale jest też wiele innych świetnych pakietów graficznych. Ten pakiet umożliwia modyfikację praktycznie każdego aspektu wykresu poprzez gramatykę graficzną i znacznie przewyższa wszystko, co widziałem w SPSS, Stata, SAS, a nawet Pythonie. R to świetne narzędzie, ale nie jest odpowiednie do wszystkiego. Jeśli chcesz przeprowadzić analizę danych, ale nie chcesz poświęcać czasu na naukę programowania, lepszym rozwiązaniem może być oprogramowanie takie jak SAS, Stata lub SPSS. Jeśli chcesz opracować oprogramowanie analityczne, które można bardzo łatwo zintegrować z większymi systemami i które musi być podłączone do różnych interfejsów, Python może być lepszym narzędziem do tego zadania. Jeśli jednak chcesz wykonać wiele złożonych analiz danych i wykresów, a spędzasz głównie czas na tych obszarach, R to świetny wybór.

…wprowadzenie do R c.d.

R to elastyczny język programowania

Jak widzieliśmy, oprócz dostarczania narzędzi statystycznych, R jest językiem programowania ogólnego przeznaczenia. Możesz użyć R, aby rozszerzyć własną funkcjonalność, zautomatyzować procesy wykorzystujące złożone systemy i wiele innych rzeczy. Zawiera funkcje z innych języków programowania obiektowego i ma mocne podstawy do programowania funkcjonalnego, które doskonale nadaje się do rozwiązywania wielu problemów związanych z analizą danych. R pozwala użytkownikowi pisać potężny, zwięzły i opisowy kod.

R jest wolny, tak jak wolności i jak darmowe piwo

Pod wieloma względami język odnosi sukcesy, ponieważ tworzy platformę, za pomocą której wiele osób może tworzyć nowe rzeczy, a język R okazał się bardzo skuteczny w tym zakresie. Jednym z kluczowych ograniczeń języka S było to, że był dostępny tylko w pakiecie komercyjnym, ale R jest wolnym oprogramowaniem. Wolny jak w wolności i wolny jak w darmowym piwie. Prawa autorskie do głównego kodu źródłowego R należą do R Foundation i są publikowane na warunkach licencji General Public License (GPL). Według Free Software Foundation, wolne oprogramowanie (wolne jak wolność) daje ci następujące cztery wolności:

Wolność 0: Uruchom program w dowolnym celu

Wolność 1: Przestudiuj, jak działa program i dostosuj go do swoich potrzeb

Wolność 2: Rozpowszechniaj kopie, abyś mógł pomóc swojemu sąsiadowi

Wolność 3: ulepszaj program i upublicznij swoje ulepszenia

Te wolności pozwoliły firmie R rozwinąć silne, płodne społeczności, w skład których wchodzą światowej klasy statystycy i programiści, a także wielu wolontariuszy, którzy pomagają ulepszyć i rozszerzyć język. Pozwalają również na rozwijanie i utrzymywanie języka R dla wszystkich popularnych systemów operacyjnych oraz na łatwe korzystanie z niego przez osoby i organizacje, które chcą to zrobić, prawdopodobnie udostępniając swoje ustalenia w sposób umożliwiający innym powtórzenie ich wyników. Taka jest siła wolnego oprogramowania.

Do czego R się nie nadaje

Żaden język programowania ani system nie są doskonałe. R z pewnością ma wiele wad, z których najczęstszą jest to, że może być boleśnie powolny (jeśli nie jest używany prawidłowo). Należy pamiętać, że R jest zasadniczo oparty na 40-letniej technologii, wracając do oryginalnego systemu S opracowany w Bell Labs. Dlatego kilka jego niedoskonałości wynika z faktu, że nie został zbudowany w oczekiwaniu na wiek danych, w którym żyjemy teraz. Kiedy narodził się R, dysk i pamięć RAM były bardzo drogie, a internet dopiero się zaczynał. Pojęcia dotyczące analizy danych na dużą skalę i obliczeń o wysokiej wydajności były rzadkie. Szybko do przodu, koszt sprzętu to tylko ułamek tego, co kiedyś, moc obliczeniowa jest dostępna online za grosze, a wszyscy są zainteresowani gromadzeniem i analizowaniem danych na dużą skalę. Ten gwałtowny wzrost w analizie danych wyniósł na pierwszy plan dwa podstawowe ograniczenia języka R, fakt, że jest on jednowątkowy i związany z pamięcią. Te dwie cechy drastycznie go spowalniają. Co więcej, R jest interpretowanym językiem z dynamicznym typowaniem, co może sprawić, że będzie jeszcze wolniejszy. I wreszcie, R ma niezmienność obiektów i różne sposoby implementacji programowania obiektowego, co może utrudniać ludziom, szczególnie tym pochodzącym z innych języków, pisanie kodu wysokiej jakości, jeśli nie wiedzą, jak sobie z nim radzić im. Powinieneś wiedzieć, że wszystkie cechy wymienione w tym akapicie są omówione w dalszej części.

Mieczem obosiecznym w R jest to, że większość jego użytkowników nie myśli o sobie jako o programistach i jest bardziej zainteresowana wynikami niż procesami (co niekoniecznie jest złe). Oznacza to, że większość kodu R, który można znaleźć w Internecie, jest napisanych bez względu na elegancję, szybkość lub czytelność, ponieważ większość użytkowników języka R nie koryguje swojego kodu w celu usunięcia tych niedociągnięć. To przenika do kodu, który jest niejednolity i nie jest rygorystycznie testowany, co z kolei tworzy wiele skrajnych przypadków, które należy wziąć pod uwagę podczas korzystania z pakietów niskiej jakości. Dobrze będzie, jeśli będziesz o tym pamiętać.

Krótkie wprowadzenie do R

W świecie, w którym dane stają się coraz ważniejsze, biznesmeni i naukowcy potrzebują narzędzi do wydajnej analizy i przetwarzania dużych ilości danych. R jest jednym z narzędzi, które w ostatnich latach stawało się coraz bardziej popularne do przetwarzania danych, analizy statystycznej i nauki o danych, a chociaż R ma swoje korzenie w środowisku akademickim, jest obecnie używane przez organizacje z wielu branż i obszarów geograficznych. Niektóre z ważnych tematów omawianych w tej sekcji są następujące:

* Historia R i dlaczego został zaprojektowany tak, jak był

* Czym jest tłumacz i konsola i jak z nich korzystać

* Jak pracować z podstawowymi typami danych i strukturami danych w języku R.

* Jak podzielić pracę za pomocą różnych funkcji

* Jak wprowadzić złożoną logikę ze strukturami sterującymi

Czym jest R, a czym nie jest

Jeśli chodzi o wybór oprogramowania do obliczeń statystycznych, trudno jest spierać się z R. Kto mógłby nie lubić wysokiej jakości, wieloplatformowego oprogramowania statystycznego typu open source? Posiada interaktywną konsolę do prac eksploracyjnych. Może działać jako język skryptowy do replikacji procesów. Ma wbudowanych wiele modeli statystycznych, więc nie musisz odkrywać koła na nowo, ale gdy podstawowy zestaw narzędzi nie wystarczy, masz dostęp do bogatego ekosystemu pakietów zewnętrznych. I to nic nie kosztuje! Nic dziwnego, że R stał się faworytem w dobie danych.

Inspiracja dla R – język S.

R został zainspirowany językiem statystycznym S opracowanym przez Johna Chambersa w AT&T. Nazwa S jest aluzją do innego jednoliterowego języka programowania opracowanego również w AT&T, słynnym języku C. R został stworzony przez Rossa Ihakę i Roberta Gentlemana na Wydziale Statystyki Uniwersytetu Auckland w 1991 roku. Ogólna filozofia S wyznacza grunt pod projekt samego języka R, co wielu programistów wywodzących się z innych języków programowania uważa za nieco dziwne i mylące. W szczególności ważne jest, aby zdać sobie sprawę, że S został opracowany, aby maksymalnie ułatwić analizę danych.

 „Chcieliśmy, aby użytkownicy mogli rozpocząć pracę w interaktywnym środowisku, w którym nie myśleli świadomie o programowaniu. Następnie, gdy ich potrzeby stały się jaśniejsze, a ich wyrafinowanie wzrosło, powinni móc stopniowo wsuwać się w programowanie, gdy język i aspekty systemu stałby się ważniejszy ”. – John Chambers

Kluczową częścią jest tutaj przejście od analityka do programisty. Chcieli zbudować język, który z łatwością obsługiwałby oba typy użytkowników. Chcieli zbudować język, który byłby odpowiedni do interaktywnej analizy danych za pomocą wiersza poleceń, ale który mógłby być również używany do programowania złożonych systemów, takich jak tradycyjne języki programowania. To nie przypadek, że ta książka ma taką strukturę. Najpierw zaczniemy przeprowadzać analizę danych i stopniowo będziemy dążyć do opracowania pełnego i złożonego systemu wyszukiwania informacji z aplikacją internetową.

R to wysokiej jakości system obliczeń statystycznych

R jest porównywalny i często lepszy od produktów komercyjnych, jeśli chodzi o możliwości programowania, rozwój złożonych systemów, produkcję grafiki i ekosystemy społeczności. Naukowcy zajmujący się statystyką i uczeniem maszynowym, a także wielu innych dyscyplin związanych z danymi, często publikują pakiety R, które towarzyszą ich publikacjom. Przekłada się to na natychmiastowy publiczny dostęp do najnowszych technik statystycznych i wdrożeń. Niezależnie od tego, jaki model lub grafikę próbujesz opracować, są szanse, że ktoś już go wypróbował, a jeśli nie, możesz przynajmniej nauczyć się na jego podstawie.

Język R … od słów do czynów !!!

Po naszym krótkim wprowadzeniu do Języka R, zapraszamy do kolejnego etapu poznawania Języka R : Nauka R Przez Przykłady.

Oto szczegółowa “rozpiska”:

Sekcja I :  Wprowadzenie do języka R, obejmuje podstawy języka R, których potrzebujesz, aby zrozumieć pozostałe przykłady. Nie jest to dokładne wprowadzenie do tematu R. Ma raczej na celu przedstawienie bardzo podstawowych pojęć i technik, których potrzebujesz, aby szybko rozpocząć pracę z trzema naszymi przykładami  które przedstawimy. Wykorzystamy trzy przykłady, aby zaprezentować szeroki zakres funkcji R. Pierwszy przykład pokazuje, jak analizować głosy za pomocą statystyk opisowych i modeli liniowych, i został przedstawiony w Sekcji II, Zrozumienie głosów za pomocą statystyk opisowych oraz w Sekcji III, Przewidywanie głosów za pomocą modeli liniowych.

Sekcja II :  Zrozumienie głosów za pomocą statystyk opisowych, pokazuje, jak programowo tworzyć setki wykresów, aby wizualnie identyfikować relacje w danych. Pokazuje, jak tworzyć histogramy, wykresy rozrzutu, macierze korelacji i jak przeprowadzać analizę głównych składowych (PCA).

Sekcja III : Przewidywanie głosów za pomocą modeli liniowych, pokazuje, jak programowo znaleźć najlepszy predykcyjny model liniowy dla zestawu danych i zgodnie z różnymi miernikami sukcesu. Pokazuje również, jak sprawdzić założenia modelu i jak korzystać z weryfikacji krzyżowej, aby zwiększyć zaufanie do wyników. Drugi przykład pokazuje, jak symulować dane, wizualizować je, analizować ich składniki tekstowe i tworzyć za ich pomocą automatyczne prezentacje.

Sekcja IV :, Symulacja danych sprzedaży i praca z bazami danych, pokazuje, jak projektować schematy danych i symulować różne typy danych. Pokazuje również, jak zintegrować rzeczywiste dane tekstowe z danymi symulowanymi oraz jak korzystać z bazy danych SQL, aby uzyskać do nich bardziej wydajny dostęp.

Sekcja V:  Komunikowanie sprzedaży za pomocą wizualizacji, pokazuje, jak tworzyć podstawowe i zaawansowane wykresy, wysoce spersonalizowane wykresy. Pokazuje również, jak tworzyć dynamiczne wykresy 3D i interaktywne mapy.

Sekcja VI :  Zrozumienie recenzji za pomocą analizy tekstu, pokazuje, jak przeprowadzić analizę tekstu krok po kroku przy użyciu technik przetwarzania języka naturalnego (NLP), a także analizy sentymentów.

Sekcja VII :  Opracowywanie automatycznych prezentacji, pokazuje, jak połączyć wyniki poprzednich rozdziałów w celu stworzenia prezentacji, które mogą być automatycznie aktualizowane najnowszymi danymi przy użyciu narzędzi takich jak knitr i R Markdown. Wreszcie trzeci przykład pokazuje, jak projektować i rozwijać złożone systemy obiektowe, które pobierają dane w czasie rzeczywistym z rynków kryptowalut, a także jak optymalizować wdrożenia i jak budować aplikacje internetowe wokół takich systemów.

Sekcja VIII : Zorientowany obiektowo system do śledzenia kryptowalut, przedstawia podstawowe techniki zorientowane obiektowo, które po połączeniu tworzą złożone systemy. Ponadto pokazuje, jak pracować z trzema najczęściej używanymi modelami obiektów R, którymi są S3, S4 i R6, a także jak sprawić, by współpracowały ze sobą.

Sekcja IX : Wdrażanie efektywnej prostej średniej kroczącej, pokazuje, jak iteracyjnie ulepszyć implementację prostej średniej ruchomej (SMA), zaczynając od tego, co jest uważane za zły kod, aż do zaawansowanych technik optymalizacji wykorzystujących zrównoleglenie i delegowanie do Języki Fortran i C ++.

Sekcja X : Dodawanie interaktywności do pulpitów nawigacyjnych, pokazuje, jak opakować to, co zostało zbudowane w poprzednich dwóch rozdziałach, aby stworzyć nowoczesną aplikację internetową przy użyciu programowania reaktywnego za pośrednictwem pakietu Shiny.

Zapraszam do lektury 🙂

Remigiusz

Kilka uwag końcowych

R to świetny program. W tej ostatniej sekcji podajemy kilka uwag końcowych. Po pierwsze, istnieje klasa, którą powinniśmy uwzględnić wcześniej, formuła klasowa. Formuły takie jak y ~ x mają formułę klasową i można im przypisać nazwę. Formuły są używane w wielu funkcjach modelowania lub jako sposób grupowania obiektu po lewej stronie według wartości obiektów po prawej stronie, na przykład w boxplot (). W boxplot () wykres pudełkowy jest tworzony dla wartości po lewej stronie tyldy dla każdej kombinacji wartości po prawej stronie tyldy. Po lewej stronie tyldy znajduje się jeden obiekt, który może być wektorem lub macierzą, a jest nim zmienna zależne). Po prawej stronie tyldy znajdują się zmienne niezależne oddzielone znakami plus lub minus. Zobacz stronę pomocy, aby uzyskać informacje o krzyżowaniu i zagnieżdżaniu zmiennych, a także o nieuwzględnianiu różnych zmiennych – takich jak termin przecięcia lub określone interakcje. Możesz otworzyć stronę pomocy, wprowadzając formułę? W wierszu polecenia R. R wymaga pewnej determinacji, aby użyć. Jeśli utkniesz w problemie i nie możesz znaleźć odpowiedzi, nie bój się eksperymentować. Nie możesz złamać R. Jeśli tworzysz funkcje, pamiętaj, aby spróbować znaleźć sposób na użycie indeksów zamiast pętli. Przeprowadź proces małymi krokami. I pamiętaj, że ramki danych to listy, a nie macierze.

Funkcje rekurencyjne

Funkcje R mogą być stosowane rekurencyjnie. Funkcja rekurencyjna to funkcja, która wywołuje samą siebie, dopóki warunek nie zostanie spełniony. Używamy szeregu, który definiuje rozkład wykładniczy, aby zilustrować działanie funkcji rekurencyjnej.

Potrzebujemy więc funkcji, która dodaje xi / i! na każdym kroku dla i równego 0, 1,…, n dla pewnego punktu zatrzymania . Ponieważ xi / i! zmniejsza się z każdym krokiem i staje się arbitralnie mały, użyliśmy rozmiaru xi / i! aby ustawić punkt zatrzymania.

Funkcja jest następująca:

> r.exp =

function (x, i = 0) {

if (abs (x ^ i / silnia (i))> 1,0e-8) {

r.exp (x, i + 1) + x ^ i / silnia (i)

}

else {

0

}

}

W pierwszym kroku rekurencji i jest równe zero, więc wartość r.exp() wynosi

W drugim kroku wartość to

Jeśli i równe n jest ostatnim krokiem wcześniej xi / i! jest mniejsza niż nasz punkt zatrzymania 1,0e-8, to dla i równego n, wartość r.exp() jest równa

Ale

r.exp(x,n+1)  = 0

więc rekurencja się zatrzymuje. Ponieważ wyrażenie w sekcji if funkcji jest ostatnią instrukcją wykonywaną w funkcji, funkcja zwraca wynik. Aby zobaczyć, jak działa funkcja, niech x będzie równe jeden:

> r.exp (1)

[1] 2,718282

> exp (1)

[1] 2,718282

Zauważ, że dla x równego jeden, funkcja daje taką samą wartość jak funkcja exp()

Pobieranie danych z funkcji

Kiedy piszesz funkcje, czasami celem funkcji jest wydrukowanie wyników na konsoli; czasami celem jest wyeksportowanie obiektu – który zostanie zapisany na konsoli, jeśli nie zostanie przypisany do obiektu; a czasami potrzebne są oba typy wyników. Funkcje print () i cat () zapisują do konsoli. Aby wyprowadzić obiekt, obiekt musi być ostatnią instrukcją w funkcji. Na przykład:

> a.function = function () {

drukuj (1: 3)

drukuj (5: 6)

}

> a.funkcja ()

[1] 1 2 3

[1] 5 6

> a.result = a.function ()

[1] 1 2 3

[1] 5 6

> a. wynik

[1] 5 6

Ponieważ w przykładzie dwie sekwencje znajdują się w funkcjach drukowania, sekwencje są drukowane niezależnie od tego, czy ma miejsce przypisanie, czy nie. Zauważ, że tylko druga sekwencja jest przypisana do obiektu a.result, ponieważ instrukcja print dla drugiej sekwencji jest ostatnią instrukcją w funkcji przed nawiasem zamykającym. Na przykład funkcja print () została usunięta:

> a.function = function () {

1: 3

5: 6

}

> a.funkcja ()

[1] 5 6

> a.result = a.function ()

> a. wynik

[1] 5 6

W tym przykładzie, ponieważ nie ma funkcji print (), sekwencje nie są drukowane. Funkcja zwraca drugą sekwencję, będącą ostatnią instrukcją.

Listy i funkcje list() i c()

Dodawanie do list może być mylące. Czy używasz list () czy c ()? Podczas tworzenia listy elementy, które mają być wpisane na listę, są oddzielane przecinkami. Ale powiedz, że chcesz dodać kilka elementów. Wtedy zwykle będziesz chciał użyć c (). Na przykład:

> a.list = list (1: 4, wklej (“a”, 1: 7, sep = “”))

> a.list

[[1]]

[1] 1 2 3 4

[[2]]

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

> b.list = list (a.list, 1: 3)

> b.list

[[1]]

[[1]] [[1]]

[1] 1 2 3 4

[[1]] [[2]]

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

[[2]]

[1] 1 2 3

> c.list = c (a.list, 1: 3)

> c.list

[[1]]

[1] 1 2 3 4

[[2]]

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

[[3]]

[1] 1

[[4]]

[1] 2

[[5]]

[1] 3

> d.list = c (a.list, list (1: 3))

> d.list

[[1]]

[1] 1 2 3 4

[[2]]

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

[[3]]

[1] 1 2 3

Obiekt d.list jest prawdopodobnie tym, co chciałeś w rezultacie. (Inną metodą uzyskania tych samych wyników jest użycie metody append () zamiast c () w powyższych wyrażeniach)

Instrukcje If i wektory logiczne

Często po wykonaniu testu logicznego testowane obiekty mają długość większą niż jeden. R nie lubi tego i ostrzega, że ​​używany jest tylko pierwszy element logiczny. Załóżmy, że chcesz sprawdzić, czy jakikolwiek element obiektu logicznego ma wartość PRAWDA. Wtedy przydatna jest funkcja any (). Funkcja any () zwraca TRUE, jeśli w obiekcie są jakieś wartości TRUE, lub FALSE w przeciwnym razie. Na przykład:

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

> a.logical

[1] TRUE TRUE FALSE TRUE

> test=8

> test

[1] 8

> if (a.logical==T) test=1

Wiadomość ostrzegawcza:

W if (a.logical == T) test = 1:

warunek ma długość> 1 i zostanie użyty tylko pierwszy element

> test

[1] 1

> if (any (a.logical)) test = 2

> test

[1] 2

> if (any (! a.logical)) test = 3

> test

[1] 3

> if (any (! a.logical [1: 2])) test = 4

> test

[1] 3

Zwróć uwagę, że w trzecim i czwartym teście test dotyczy wartości FAŁSZ. The! służy do logicznej negacji obiektu as.logical w teście na FALSE. Więcej informacji na temat any () można znaleźć, wpisując ?any w wierszu polecenia R.