background image

2012/2013 

 

Lab. 1 

BADANIA PREFERENCJI – Wstęp do programu R 
Studia niestacjonarne II stopnia, Kierunek „Ekonomia”, II rok, III semestr (zimowy) 
Prof. UE dr hab. Andrzej Bąk 
 
 

Wprowadzenie do programu R 

1.  Uruchomienie programu R 

  Rgui.exe  

rgui 

 

Za pomocą ikony

  

 

Znak zachęty 

>

 

2.  Tryby pracy 

  tryb interaktywny (polecenia wpisywane w oknie konsoli) 

 

tryb wsadowy, wykonywanie zawartości skryptów – funkcja source("skrypt.r") 

 

tryb „nadzorowany” (praca z wykorzystaniem powłoki typu Rcmdr) 

3.  Zakończenie pracy z programem R 

  q() 

  quit() 

  File | Exit 

 

Za pomocą ikony 

 

Pytanie: Save workspace image? Tak Nie Anuluj 

4.  Katalog roboczy 

setwd() 

np.  setwd("c:/rtmp")  lub 

setwd("c:\\rtmp") 

lub polecenie File | Change dir… 

getwd() 

dir() 

 
5.  Konsola użytkownika 

Konsola użytkownika służy do komunikacji z programem R za pomocą poleceń. Polecenia to wyrażenia lub 
przypisania. W poleceniach występują funkcje, operatory, instrukcje, stałe, zmienne, literały i inne obiekty. 
 
Wielkość liter, którymi pisane są polecenia jest rozróżniana przez interpreter języka podczas dialogu z 
wykorzystaniem konsoli oraz w czasie wykonywania skryptów napisanych w języku R (np. A i a to różne 
znaki). 
 
 
Enter 
Ctrl L 
  
  Home End Backspace Delete 
Esc 
 
Ctrl C  Ctrl X  Ctrl V 
Tab 

Akceptacja polecenia 
Usunięcie zawartości konsoli 
Przywołanie wykonanego polecenia (historia poleceń) 
Modyfikacja przywołanego polecenia 
Przerwanie wykonywanego polecenia (zatrzymanie interpretera 
poleceń) 
Kopiowanie, wycinanie, wklejanie 
Uzupełnianie poleceń 

 

Ustawienie 
katalogu 
roboczego

!

 

background image

2012/2013 

 

Lab. 1 

6.  Menu programu 

Polecenia z menu File 
 
Source R code… 

wykonanie skryptu w języku R – funkcja source()  

 

 

 

(uwaga: funkcja print()) 

New script 

 

utworzenie nowego skryptu 

Open script…   

edycja istniejącego skryptu 

Display file(s)…  

wyświetlenie zawartości folderu roboczego 

Load Workspace… 

wczytanie z pliku dyskowego do pamięci zapisanej zawartości przestrzeni roboczej 
(stanu obiektów) 

Save Workspace… 

zapisanie w pliku dyskowym zawartości przestrzeni roboczej (stanu obiektów) 

Load History…   

odczytanie z pliku dyskowego historii wykonanych poleceń (np. w poprzedniej sesji) 

Save History…   

zapisanie w pliku dyskowym historii wykonanych poleceń 

Change dir…   

zmiana folderu roboczego – funkcja setwd() 

Print…   

 

wydrukowanie zawartości konsoli lub skryptu 

Save to File…   

zapisanie w pliku tekstowym zawartości konsoli 

Exit 

 

 

wyjście z programu 

 
 
Polecenia z menu Help 
 
Console 

 

klawisze używane podczas pracy z konsolą 

FAQ on R 

 

najczęściej zadawane pytania o R 

FAQ on R for Windows 

najczęściej zadawane pytania o R w wersji dla Windows 

Manuals (in PDF) 

zbiór podręczników w plikach PDF 

R functions (text)… 

pomoc na temat funkcji programu (języka) R 

Html help 

 

pomoc w formacie HTML – funkcja help.start() 

Html search page 

przeszukiwanie stron www 

Search help…   

wyszukiwanie informacji  w zainstalowanych pakietach – 

 

 

 

funkcja help.search() 

search.r-

project.org…  wyszukiwanie informacji na stronach internetowych projektu R –  

 

 

 

 

funkcja RSiteSearch() 

Apropos… 

wyświetlenie funkcji zawierających podany ciąg znaków – funkcja apropos() 

R Project home page 

strona domowa projektu R http://www.r-project.org/ 

CRAN home page 

strona domowa zasobów (serwery lustrzane) 

About   

 

O wersji R 

Pomoc wywoływana w oknie konsoli: 
> help() 
> help("date") 
> ?date 
> example(date) 
> args(date) 
> apropos("help") 
> help.search("date") 
 
Polecenia z menu Packages 
Loa

d package… 

wczytanie pakietu do pamięci (library()) 

Set CRAN mirror… 

wybór serwera CRAN 

Select repositories 

wybór repozytoriów z pakietami 

Install package(s)… 

instalacja pakietu 

Update packages… 

aktualizacja pakietu 

Install package(s) from local zip files…   

instalacja pakietu z pliku zip na dysku lokalnym 

 
7.  Przykłady prostych obliczeń (wynik jest wyświetlany w oknie konsoli) 

> 2+2 
[1] 4 
> 2^10 
[1] 1024 

Praca ze 
skryptami 
w języku R 

background image

2012/2013 

 

Lab. 1 

> 3*15+5 

 

#znak # poprzedza komentarz pomijany przez interpreter 

[1] 50 
> 3*(15+5)   

#hierarchia operatorów 

[1] 60 
 
> -3^2 
[1] -9 
 
> (-3)^2 

 

#hierarchia operatorów 

[1] 9 
 
> (-3)^3 

 

#hierarchia operatorów 

[1] -27 
 
> 2^10-1 

 

#hierarchia operatorów 

[1] 1023 
 
> 1/5 
[1] 0.2 

 

#domyślny separator miejsc dziesiętnych 

 
8.  Operatory przypisania (wynik jest przypisywany do zmiennej, obiektu) 

Operatory  przypisania  umożliwiają  tworzenie  obiektów,  np.  zmiennych  lub  funkcji.  Zmienne  służą  do 
przechowywania  w  pamięci  operacyjnej  wartości,  np.  wyników  obliczeń.  Funkcje  natomiast  są  zapisanymi  w 
języku R algorytmami obliczeniowymi. Do operatorów przypisania należą: <- -> = 
Najczęściej korzysta się z operatora <- 
 
> s<-2+2 

 

#najczęściej stosowany operator przypisania 

> s 

 

 

#wyświetlenie wyniku przypisanego do zmiennej s 

[1] 4 
 
> (r<-50-25) 

#przypisanie wyniku do zmiennej r i jego wyświetlenie 

[1] 25 
 
> 50-25->r   

#rzadziej stosowany operator przypisania 

> r 
[1] 25 
 
9.  Przykłady użycia funkcji języka R 

Funkcje są wywoływane za pomocą nazwy z nawiasami (). Jeżeli funkcja nie wymaga argumentów, to dodaje 
się nawiasy puste, w przeciwnym razie w nawiasach umieszcza się argumenty. 
Funkcja date() nie wymaga argumentów, a funkcja sqrt() wymaga argumentu w postaci liczby lub obiektu 
zawierającego liczbę.  
Nazwy  obiektów  mogą  zawierać  znaki  alfanumeryczne  oraz  kropkę  i  podkreślenie.  Nie  są  dozwolone  w 
nazwach obiektów np. operatory.  
 
> date() 

 

#funkcja bez argumentów 

[1] "Mon Oct 13 20:44:55 2008" 
 
> sqrt(9) 

 

#funkcja wymagająca jednego argumentu 

[1] 3 
> sqrt(-9)   

#komunikat o błędnym argumencie 

[1] NaN 
Warning message: 
In sqrt(-9) : NaNs produced 
 
> log(1024,2) 

#funkcja wymagająca dwóch argumentów 

[1] 10 
> ls() 

 

#wyświetlenie obiektów utworzonych w pamięci operacyjnej 

[1] "r" "w" 
 

background image

2012/2013 

 

Lab. 1 

> rm("r") 

 

#usunięcie obiektu r z pamięci operacyjnej 

> ls() 
[1] "w" 
 
#operator = użyty do przypisania wartości argumentowi funkcji 
> rm(list=ls(all=TRUE)) #usunięcie wszystkich obiektów z pamięci RAM 
> ls() 
character(0) 
 
Funkcja c() – combine (łączenie argumentów) 
> c(1,2,3) 
[1] 1 2 3 
 
> c(1:10) 

#operator zakresu : 

 [1]  1  2  3  4  5  6  7  8  9 10 
 
> c(1:5,"a","b","c") 

#łączenie typów w wektorze; jakie są konsekwencje? 

[1] "1" "2" "3" "4" "5" "a" "b" "c" 
 
 
 

Praca z programem R 

1.  Katalog roboczy, utworzenie katalogu roboczego 
 
Utworzenie własnego katalogu roboczego, np. za pomocą programu Eksplorator Windows. 
Uruchomienie programu R 
 
> setwd("C:/rtmp") 

# zmiana katalogu roboczego 

lub polecenie File | Change dir… 
> getwd() 

 

 

# wyświetlenie aktualnego katalogu roboczego 

> dir() 

 

 

#wyświetlenie zawartości katalogu roboczego 

 
2.  Generowanie ciągów arytmetycznych 
 
– operator zakresu : i funkcja c() – liczby całkowite w przedziale od 1 do 100 i od 25 do 1 
 
> c(1:100); > c(25:1) 
 
– funkcja seq() – generuje  liczby w przedziale od –10 do 10 z krokiem 1 
 
> seq(-10,10,1) 
 
– funkcja seq() – przykład generowania liczb w przedziale od 1 do 10 z krokiem 0,5 
 
> seq(1,10,by=0.5)  #by–krok, = operator przypisania wartości argumentowi 
 
– funkcja seq() – przykład użycia funkcji do generowania wartości w przedziale <–2

; 2

> dla sin(x) 

 
> x <- seq(-2*pi,2*pi,by=0.1) 
> plot(x,sin(x),type="l") 

 

# narysowanie wykresu funkcji sin(x) 

 
– funkcja seq() – z argumentami length, from, to 
> seq(length=6,from=2,to=5) 
 
– funkcja rep() – powtórzenie (replikacja) wektora liczb 1:5 (10 razy) 
> rep(c(1:5),10) 
 
– funkcja rep() – powtórzenie (replikacja) wektora liczb 1:5 (każdy element powtórzony 3 razy) 
> rep(c(1:5),each=3) 
– funkcja rep() – powtórzenie (replikacja) wektora liczb 1:5 (długość wektora 21 elementów) 

background image

2012/2013 

 

Lab. 1 

> rep(c(1:5),length.out=21) 
 
– funkcja rep() – powtórzenie (replikacja) wektora znaków  
> rep("a",15) 
 
3.  Generowanie liczb (ciągów) losowych 
 
  funkcja sample(x,size,replace=FALSE,prob=NULL) – próba losowa 

 

either a (numeric, complex, character or logical) vector of more than one element from which 
to choose, or a positive integer.  

size   

non-negative integer giving the number of items to choose.  

replace 

should sampling be with replacement?  

prob   

a vector of probability weights for obtaining the elements of the vector being sampled. 

 
> sample(1:20,5) 
> sample(20,5) 
> sample(10,5,replace=TRUE)   

#losowane wartości mogą się powtarzać 

> sample(49,6,replace=FALSE)  #losowane wartości nie mogą się powtarzać 
 
> sample(letters,5) 

#losowanie znaków (małe litery alfabetu) 

> sample(LETTERS,5) 

#losowanie znaków (wielkie litery alfabetu) 

 
  funkcje runif() i rnorm() 
> runif(5)   

 

#rozkład jednostajny 

> rnorm(10,mean=0,sd=1) #rozkład normlany o parametrach mean i sd 
 
4.  Tworzenie wektorów za pomocą funkcji: vector(), numeric(), logical(), character() 
 
> x<-vector(mode="numeric",length=10) 

#wektor z elementami liczbowymi 

> x 
> x<-vector(mode="character",length=10)   #wektor z elementami znakowymi 
> x 
> x<-vector(mode="logical",length=10)  

#wektor z elementami logicznymi 

> x 
> numeric(10) 
> logical(10) 
> character(10) 
 
5.  Tworzenie macierzy za pomocą funkcji: dim(), matrix(), array() 
 
> X<-1:24 
> dim(X)<-c(4,6)  #ustalenie wymiarów macierzy 
> dim(X)<-c(2,12) #ustalenie wymiarów macierzy 
> X 
> X<-matrix(1:24,nrow=4,ncol=6) 
> X 

 

 

#wyświetlanie elementów macierzy 

> X<-matrix(1:24,nrow=4,ncol=6,byrow=TRUE) 

#układ wierszami 

> X 
> X<-matrix(1:24,nrow=4,ncol=6,byrow=FALSE) 

#układ kolumnami 

> X[1,] 

#wyświetlanie wybranych elementów macierzy  

> X[,1] 
> X[1,6] 
> X[1:3,2] 
> X<-matrix(nrow=2,ncol=3,byrow=TRUE) 

#brak danych 

> X 
> X<-matrix(0,nrow=2,ncol=3,byrow=TRUE)  #macierz wypełniona 0 
> X 
> X<-matrix(T,nrow=2,ncol=3,byrow=TRUE)   #macierz wypełniona TRUE 
> X 
 

background image

2012/2013 

 

Lab. 1 

> array(1:12,c(3,4))  
> array(1:12,c(4,3))  
> array(1:12,c(3,2,2))  #macierz trójwymiarowa 
 
6.  Tworzenie listy za pomocą funkcji: list() 
 
> lista<-list(1:3,c("a","b","c"),c(F,T)) 
> lista 
> lista[2] 
> lista[[2]][2] 
> Lista<-list(liczby=1:3,znaki=c("a","b","c"),logiczne=c(F,T)) 
> Lista 
> Lista$znaki 
 
7.  Tworzenie tabeli danych za pomocą funkcji: data.frame() 
 
> a<-sample(c(TRUE,FALSE),10,replace=TRUE); b<-LETTERS[1:10] 
> c<-runif(10); d<-month.abb[1:10] 
> a; b; c; d 
> tab<-data.frame(a,b,c,d) 

 

#utworzenie tabeli danych 

> tab 
> colnames(tab)<-c("Logiczne","Znakowe","Liczbowe","Tekstowe") 

#nazwy 

kolumn 
> tab 
 
8.  Zapisywanie tabeli danych w pliku dyskowym za pomocą funkcji: write.table(), write.csv(), 

write.csv2() 

 
> write.table(tab,file="tabela.txt") 
> write.csv(tab,file="tabela1.csv") 
> write.csv2(tab,file="tabela2.csv") 

#separator miejsc dziesiętnych „,” 

> write.csv2(tab,file="tabela3.csv",row.names=FALSE) #bez numerów wierszy 
 
9.  Odczytywanie tabeli danych z pliku dyskowego za pomocą funkcji: read.table(), read.csv(), 

read.csv2() 

 
> tbl<-read.table("tabela.txt") 
> tbl1<-read.csv("tabela1.csv") 
> tbl2<-read.csv2("tabela2.csv") 
> tbl3<-read.csv2("tabela3.csv") 
> tbl 
> tbl3 
 
 

background image

2012/2013 

 

Lab. 1 

Elementy programowania w języku R 

 
1.  Operatory 
 
  Przypisania: 
<–   –>   = 
  Logiczne: 

negacja 

suma logiczna (listy i wektory) 

|| 

suma logiczna (pojedyncze wartości) 

iloczyn logiczny (listy i wektory) 

&& 

iloczyn logiczny (pojedyncze wartości) 

  Relacyjne (porównywanie wartości):  ==  !=  <  <=  >  >=  
  Arytmetyczne:  +  -  *  /  ^ 
%% 

dzielenie modulo (wynikiem jest reszta z dzielenia) 

%/% 

dzielenie całkowite (pominięcie reszty z dzielenia) 

%*% 

mnożenie macierzy 

 
2.  Grupowanie wyrażeń za pomocą instrukcji: {} 
 
 
3.  Instrukcje sterujące 
 
  Instrukcja warunkowa (pojedyncze wartości): if(warunekwyrazenie1 else wyrazenie2 
 
  Funkcja warunkowa (wektory): ifelse(warunek, wyrazenie1wyrazenie2
 
4.  Instrukcje iteracyjne 
 
  Pętla z ustaloną z góry liczbą powtórzeń: for(zmienna in od:dowyrazenie 
 
  Iteracja, w której warunek sprawdzany jest na wejściu: while(warunek) wyrazenie 
 
  Iteracja, w której warunek sprawdzany jest na wyjściu: repeat wyrazenie 
 
5.  Funkcje użytkownika 
 
Instrukcja definiowania funkcji:  
nazwa<-function(argumentywyrazenie 
return(wyrazenie)
 
 
lub 
 
nazwa<-function(argumenty)  

 

wyrazenia 

 

return(wyrazenie) 


 
6.  Przykłady wyrażeń 
 
> 2==2 
 
> 2!=2 
 
> 5%%2 
 
> 5%/%2 
 

background image

2012/2013 

 

Lab. 1 

> w<-c(1:10) 
> w 
> sum(w) 

 

#wynik 55, co to oznacza? 

> sum(w>6)   

#wynik 4, co to oznacza? 

> sum(w[w>6]) 

#wynik 34, co to oznacza? 

 
A<-matrix(c(1:9),nrow=3,ncol=3) 
B<-matrix(c(-1:-9),nrow=3,ncol=3) 
C<-A%*%B 

#jakie macierze prostokątne można mnożyć? 

 
> 2011%%4==0&&2011%%100!=0||2011%%400==0   

#co oblicza to wyrażenie? 

Użyj w tym wyrażeniu zmiennej r zamiast stałej 2011 (np. r<-2011) 
Sprawdź inne lata, np. 2012, 2013 itd. 
 
Wyrażenia z instrukcją (funkcją) warunkową: 
 
> if(1234%%2==0) print("parzysta") else print("nieparzysta") 
 
> sum(ifelse(1:123%%2==0,1,0)) 

#co oznacza wynik 61? 

 
 
7.  Przykłady funkcji użytkownika 
 
  Funkcje użytkownika zapisuje się w skryptach (plikach dyskowych), np. nazwa_skryptu.r 
  Nowy skrypt można zapisać w edytorze programu R uruchamianym poleceniem File | New script 
  Edycję istniejącego skryptu (poprawę, rozbudowę, testowanie, uruchamianie poszczególnych wierszy 

programu) można prowadzić za pomocą polecenia File | Open script… 

  Wykonanie skryptu umożliwia polecenie File | Source R code… (funkcja source()) 
 
 

(1) Ciąg Fibonacciego (1202 r.): 

2

dla

2

,

1

dla

1

2

1

n

F

F

n

F

n

n

n

 

Pierwsze 10 wyrazów ciągu Fibonacciego: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55. Skrypt Fibonacci.r 
 
#Fibonacci(n) - funkcja znajdująca n liczb ciągu Fibonacciego 
#wywołanie - fib<-Fibonacci(n) 
Fibonacci<-function(n) 

  if(n>2 && n<=20) 
  { 
    fib<-numeric(n) 
    fib[1:2] <- 1 
    for(i in 3:n) {fib[i]<-fib[i-1]+fib[i-2]} 
   } 
  else {fib<-"n<2 lub n>20"} 
  return(fib) 

Wywołanie funkcji Fibonacci() 
> #te wiersze należy wpisać w oknie konsoli po wcześniejszym uruchomieniu 
> #funkcji Fibonacci() za pomocą funkcji source() 
> fib<-Fibonacci(20) 
> fib 
 
 
 
 
 
 

background image

2012/2013 

 

Lab. 1 

(2)  Algorytm  Euklidesa  (Eudoksos  z  Knidos  (IV  wiek  p.n.e.)):  największy  wspólny  dzielnik  dwóch  liczb 
całkowitych. Skrypt Euklides.r 
 
#Euklides(a,b) - funkcja znajdująca NWD dwóch liczb całkowitych 
#wywołanie - nwd<-Euklides(a,b) 
Euklides<-function(a,b) 

   while(a!=b) 
   { 
      if(a>b) {a<-a-b} else {b<-b-a} 
   } 
   return(a) 

 
#te wiersze będą wykonane po uruchomieniu funkcji 
nwd<-Euklides(55,100) 
print(nwd)  # funkcja print wyświetla wyniki w trybie source() 
 
 
8.  Uruchomienie skryptu 
 
source("Fibonacci.r")  
lub File | Source R code… 
 
source("Euklides.r")  
lub File | Source R code… 
 

background image

2012/2013 

 

Lab. 1 

10 

9.  Instalacja pakietów (Internet) 

 

 

 

background image

2012/2013 

 

Lab. 1 

11 

Analiza conjoint w programie R 

 

Pakiet

 conjoint  

 
Bąk A., Bartłomowicz T. (2012), Package conjoint. Conjoint analysis package
http://cran.r-project.org/web/packages/conjoint 

 
 

 

background image

2012/2013 

 

Lab. 1 

12 

Instalacja pakietu conjoint: 

 

 

 
 
 

Wczytanie pakietu conjoint do pamięci: 

 

> library(conjoint) 

 

background image

2012/2013 

 

Lab. 1 

13 

Podręcznik pakietu conjoint 
 

 

 

background image

2012/2013 

 

Lab. 1 

14 

Strona Katedry Ekonometrii i Informatyki 
 
http://wgrit.ae.jgora.pl/keii/conjoint/index.html