1. Indeksy/indeksowanie : Do elementów wektora, list, macierzy czy ramek, można się odwołać na kilka sposobów.

Podobne dokumenty
Pakiety Matematyczne - R Zestaw 2.

Podstawy Programowania C++

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Podstawy Programowania Podstawowa składnia języka C++

1 Podstawy c++ w pigułce.

-Instalacja R: -Instalacja RStudio:

LibreOffice Calc VBA

Przykład 1: Funkcja jest obiektem, przypisanie funkcji o nazwie function() do zmiennej o nazwie funkcja1

Konstrukcje warunkowe Pętle

Modelowanie rynków finansowych z wykorzystaniem pakietu R

1 Podstawy c++ w pigułce.

Pętle. Dodał Administrator niedziela, 14 marzec :27

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Programowanie w języku Python. Grażyna Koba

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Cw.12 JAVAScript w dokumentach HTML

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Podstawy programowania skrót z wykładów:

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Algorytmy i struktury danych

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Pętla for. Wynik działania programu:

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

GRUPA ĆWICZENIOWA (ZAKREŚL ODPOWIEDNIĄ): MG8 MG13 MB13 MD13 BT13

Metody numeryczne Laboratorium 2

Język C, instrukcje sterujące (laboratorium)

Java Podstawy. Michał Bereta

Programowanie robota mobilnego E-puck w języku Python

Pakiety Matematyczne - R Zestaw 1.

> (gospodarstwadomoweszczecin1900 <- read.csv("gospdom_szczecin_1900.csv")) liczbaosob liczbagospodarstw

1 Powtórzenie wiadomości

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Wstęp do Programowania Lista 1

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Język C zajęcia nr 5

Instalacja Pakietu R

Warsztaty dla nauczycieli

Materiały do zajęć III

lekcja 8a Gry komputerowe MasterMind

Programowanie - instrukcje sterujące

Odczyt danych z klawiatury Operatory w Javie

do MATLABa programowanie WYKŁAD Piotr Ciskowski

System operacyjny Linux

Języki skryptowe w programie Plans

Matlab Składnia + podstawy programowania

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Matlab Składnia + podstawy programowania

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

1 Wielokrotne powtarzanie tych samych operacji

Przykład 1 -->s="hello World!" s = Hello World! -->disp(s) Hello World!

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

JAVAScript w dokumentach HTML - przypomnienie

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

4. Funkcje. Przykłady

Podstawy programowania w języku C

JAVAScript w dokumentach HTML (2)

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Programowanie obiektowe - zadania

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

KOTLIN. Język programowania dla Androida

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Wprowadzenie do Pakietu R dla kierunku Zootechnika. Dr Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu

if (wyrażenie ) instrukcja

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Pytania dla języka Python

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Warunki i pętle. Instrukcja warunkowa if. Przykład zastosowania.

Instrukcje cykliczne (pętle) WHILE...END WHILE

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

WHILE (wyrażenie) instrukcja;

Liczby losowe i pętla while w języku Python

Instrukcje sterujące

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

Laboratorium nr 1. i 2.

WHILE (wyrażenie) instrukcja;

Interpreter poleceń oraz zmienne środowiskowe

Transkrypt:

Rachunek Prawdopodobieństwa i Statystyka lab 2. Kaja Chmielewska ( Kaja.Chmielewska@cs.put.poznan.pl ) 1. Indeksy/indeksowanie : Do elementów wektora, list, macierzy czy ramek, można się odwołać na kilka sposobów. - notacja wektorowa zmienna[zakres]. Przez zmienną rozumie się listę, wektor, macierz lub ramkę danych. Zakres może być wektorem liczb całkowitych lub jedną liczbą całkowitą. W przypadku indeksowania list, wektorów, macierzy czy ramek, możemy w nawiasach kwadratowych [] podać wektor nazw elementów Ważne! Nie można w zakres mieszać indeksów dodatnich i ujemnych. > wektor <- 1:10 > wektor[1:3] # trzy pierwsze elementy > wektor[c(-1,-2,-5)] # wyświetlenie elementów bez pierwszego elementu, bez drugiego i bez 5 > wektor <- c(a = 1, b = 2, c =3) > wektor[c( a, b )] # indeksy nie muszą być liczbami, mogą to być nazwy elementów - notacja macierzowa zmienna[zakres1, zakres2]. Zmienna jest macierzą lub ramką danych. Wybierana jest podmacierz o wskazanych indeksach. > macierz <- matrix(1:4,2,2) > macierz[1,] # 1 wiersz macierzy, zgubiony jest wymiar macierzy (wynik jest wektorem) > macierz[1,,drop=t] #wynik jest wektorem > macierz[1,,drop=f] #wynik jest macierzą > macierz[-1,-1] #elementy poza pierwszym wierszem i pierwszą kolumna - notacja listowa zmienna$wartosc1. Zmienna to lista, wektor lub ramka danych. Wynikiem zastosowania tego operatora jest element listy lub wektora, lub kolumna z ramki danych o nazwie wartosc1. > osoba <- list(name=c( Anna, Joanna ), surname= Kowalska, age=25, married=t) > osoba$name > osoba[[2]] - notacja nawiasowa zmienna[[indeks1]]. Zmienna to wektor, lista, macierz lub ramka danych. Zwracany jest jeden element (jeden indeks). Indeks nie może być wektorem. Indeksowanie w ten sposób jest najczęstsze dla list. Ramka danych również jest listą, co oznacza, że ten sposób doprowadzi do wybrania wskazanej KOLUMNY, podczas gdy w przypadku macierzy doprowadzi do wybrania JEDNEJ wartości. > macierz <- matrix(1:4,2,2) > macierz[[2]] #macierz jest tak naprawdę wektorem

> osoba <- list(name=c( Anna, Joanna ), surname= Kowalska, age=25, married=t) > osoba[[1]] #1 element listy jest wektorem dwuelementowym > osoba[[c(1,2)]] Funkcja which() - Przydatna przy operacjach na indeksach. Wynikiem funkcji są indeksy elementów spełniające zadany warunek logiczny. > wektor = c(1,3,6,10,10.5,12) > which(wektor == 10.5) > which(wektor < 10) which.min() i which.max() - zwracają indeks elementu minimalnego i maksymalnego Funkcja match() - Wynikiem są indeksy wystąpień wektora elementów w innym wektorze. > match(c(3,10,10.5), wektor) Indeksowanie służy nie tylko do wyświetlania konkretnych danych, ale także do ich modyfikacji - modyfikacje wektora: > x <-1:10 > x[1] <- 4 # pierwszy element wektora x, a teraz wartość 4 > x[] <- 0 # zero zastąpi wszystkie elementy > x[13] <- 77 #nastąpiło dodanie nowej wartości dla indeksu 13, indeksy 11 i 12 mają wartość NA - modyfikacje listy: > x <- lista(1,2,3) > x[[1]] <- c(5,10) # pierwszy element zastąpiono wektorem dwuelementowym > x[[5]] <-22 # rozszerzenie listy 2. Sekwencje liczb : Sekwencje to regularne wektory liczb całkowitych (ciągi arytmetyczne o dowolnym kroku). Do wygenerowania sekwencji można użyć funkcji seq() lub operatora :. - użycie operatora : oznacza, zakres od - do z krokiem 1 > -3:3 - użycie funkcji seq(), np. seq(5), oznacza wyświetl liczby od 1 do 5, czyli jest równoważne z użyciem operatora 1:5. > seq(5) Funkcji seq() można podać zakres wektora od - do, oraz zdefiniować krok: > seq(5,15) > seq(10,20, by=2) > seq(10,1,-2)

Operując na sekwencjach liczb, przydatna jest funkcja sample(). Funkcja ta losuje n-elementowy podzbiór z zadanego wektora > sample(letters,10,t) #1 argumentem jest wektor, letters to wektor małych liter z alfabetu romańskiego #2 argumentem jest liczba losowo wygenerowanych liter z wektora letters #3 argumentem jest T (replace=t) co oznacza, że losujemy elementy ze zwracaniem > sample(1:5,10,t) 3. Obiekty: wyświetlanie i formatowanie : - Funkcja cat() i print() czyli wyświetlenie niesformatowane i sformatowane: > napis = rep(c( herbata stygnie,, zapada zmrok,, a pod piorem ciagle nic ),2) > print(napis) > cat(napis) Dodatkową różnicą tych funkcji jest fakt, że funkcję print() można przeciążać. Co oznacza, że można samemu określić jak mają zostać wyświetlone obiekty różnych klas. - Funkcja format() stosowana przy konwersji danego obiektu na typ znakowy (zgodnie z ustalonym formatowaniem): > format(10/3) > format(10/3, digits=2) # wyświetlenie z max. 2 cyframi znaczącymi > format(10/3, sci=true) # notacja naukowa - Funkcja paste() łączy wektory napisów > paste( Ala, ma, kota ) - Inne funkcje do formatowania: sprintf(), tostring(), encodestring(), formatfix(), iconv(). 4. Instrukcje warunkowe i pętle : - instrukcja warunkowa if... else: if (warunek) instrukcja1 if (warunek) instrukcja1 else instrukcja2 if (warunek){

instrukcja1 else{ instrukcja2 >if(4%%2==0){ cat("parzysta") else{cat("nieparzysta") Słowo kluczowe else nie może rozpoczynać się w nowej linii - pamiętaj, że R jest językiem interpretowanym! Interpreter nie spodziewa się kolejnych instrukcji. Wyjątkiem jest stosowanie takiej składni w ciele funkcji. - Funkcje ifelse(): Argumentem funkcji ifelse() jest wektor warunków logicznych, składnia: > ifelse(warunek, instrukcja1, instrukcja2) #warunek może być 1 wartością logiczną lub wektorem wartości logicznych. #wynik będzie miał wartości opisane przez instrukcja1 w pozycjach odpowiadających wartości TRUE #wynik będzie miał wartości opisane przez instrukcja2 w pozycjach odpowiadających wartości FALSE > ifelse(1:10 < 5, mniej, więcej ) - Funkcja switch(), składnia: switch(klucz, wartosc1 = akcja1, wartosc2 = akcja2,...) Pierwszy argument powinien być typu znakowego lub wyliczeniowego. W zależności od wartości tego argumentu, wynikiem jest wartość zwrócona przez odpowiednią akcję. > x <- switch(3, first, second, third, fourth ) > print(x) - Pętla for: for (iterator in kolekcja){ instrukcje #Pętla wykonuje się tyle razy ile jest elementów w obiekcie kolekcja Przykład 1: for(i in 1:10){ cat(paste( wartosc zmiennej i:, i, \n ))

Przykład 2: indeksy <- c( czerwony, zielony, niebieski ) for (i in indeksy){ cat(paste(i, \n )) Wyznaczanie wektora indeksów pętli za pomocą funkcji seq_along(), argumentem tej funkcji jest wektor dowolnych wartości, a wynikiem wektor kolejnych liczb naturalnych (od 1) for (i in seq_along(indeksy)){ cat(paste( element, i, to, indeksy[i], \n )) Podobne działanie do pętli for mają funkcje z rodziny *apply(), np. funkcja lapply(). - Pętla while: while (warunek logiczny){ instrukcje Przykład 1: i <- 0 while( i < 5){ print(i) i <- i+1 Pętla while()może być przydatna, jeśli mamy losowość i ma ona zostać przerwana przez określony warunek. - Pętla repeat: Pętla, która nie posiada warunku stop. Jej działanie zostaje przerwane w przypadku wystąpienia błędu lub instrukcji break. repeat{ instrukcje

Przykład 1: x <- 1 repeat { print(x) x = x+1 if (x == 3){ break break - przerywa działanie pętli next - przerwanie wykonywania aktualnej iteracji i przejście do kolejnej

Zadania: Zadania pod koniec zajęć prześlij na maila (Kaja.Chmielewska@cs.put.poznan.pl) w wersji.pdf. Proszę nadać tytuł maila zgodnie z opisem: RPiS_Imię_Nazwisko_lab2 1. Wykorzystaj funkcję seq() aby wyświetlić wektor 10 liczb w zakresie od 10 do 25. Funkcja seq() powinna sama ustawić krok. 2. Przetestuj funkcję sample(). Jaki jest domyślny trzeci argument tej funkcji? 3. Wylosuj wektor 20 liczb, liczby mają być losowane z zakresu od 1:3, z określonymi prawdopodobieństwami wylosowania np. (0.1, 0.3, 0.6). 4. Wyświetlanie w sposób sformatowany i niesformatowany, do zmiennej napis przypisz wektor zawierający 3 zdania ala ma kota, ola nie ma kota, ela ma psa. Zreplikuj wektor trzykrotnie, a następnie użyj funkcji print i cat do wyświetlenia zmiennej. Co zaobserwowałeś? 5. Wykorzystaj instrukcje warunkowe, aby sprawdzić czy liczba 1515 jest parzysta. Jeśli liczba jest parzysta to wyświetl stosowny komunikat, oraz jeśli liczba jest nieparzysta to również wyświetl stosowny komunikat. 6. Wykorzystaj funkcję switch(), aby sprawdzić jaka jest klasa danej zmiennej. Zadeklaruj zmienna liczba o wartości 1515. Jeśli zmienna jest klasy factor to wyświetl typ czynnikowy, jeśli zmienna jest klasy logical to wyświetl typ logiczny, jeśli zmienna jest klasy numeric to wyświetl typ liczbowy. Jeśli wartość naszego klucza nie pasuje do etykiety, wykonaj akcję domyślną i wyświetl inny typ. 7. Wyświetl na ekranie wszystkie liczby całkowite podzielne przez 3 bez reszty należące do zadanego przedziału [3,333]. 8. Napisz program znajdujący wszystkie dzielniki liczby 33. 9. Wyznacz 15 kolejnych liczb Fibonacciego. Podaj numer indeksu dla którego wartość jest równa 233.