Litteratur. Statistisk Programmering. Logiska AND och OR. Funktioner i R. Programmering i R

Relevanta dokument
Uppgifter till lektion 1. Statistisk Programmering. Programmeringsspråk. Kompilerande språk. Använda R

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Föreläsning 3: Booleans, if, switch

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Användarhandledning Version 1.2

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

Planering Programmering grundkurs HI1024 HT data

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Planering Programmering grundkurs HI1024 HT TIDAA

Chapter 4: Writing Classes/ Att skriva egna klasser.

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDIU01 - Programmering i C++, grundkurs

TAIU07 Matematiska beräkningar med Matlab

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

DD1361 Programmeringsparadigm. Carina Edlund

Tentamen i Introduktion till programmering

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Planering Programmering grundkurs HI1024 HT 2014

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Grundläggande programmering med C# 7,5 högskolepoäng

Metoder (funktioner) Murach s: kap Winstrand Development

Tentamen ges för: Tentamensdatum: Tid:

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Java, klasser, objekt (Skansholm: Kapitel 2)

2D1339 Programkonstruktion för F1, ht 2003

Föreläsning 1 & 2 INTRODUKTION

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Typkonvertering. Java versus C

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Funktionell programmering. Haskell. Ge#ng started...

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Pekare och arrayer. Indexering och avreferering

TDIU01 - Programmering i C++, grundkurs

Kort om programmering i Python

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

Föreläsning 6: Metoder och fält (arrays)

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Föreläsning 1: Intro till kursen och programmering

2D1339 Programkonstruktion för F1, ht 2003

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Objektorienterad programmering i Java I

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Introduktion C-programmering

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Tillämpad programmering

Variabler och konstanter

TDDC77 Objektorienterad Programmering

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Tentamen i Programmering grundkurs och Programmering C

Beräkningsvetenskap föreläsning 2

JAVA Mer om klasser och objektorientering

Klassdeklaration. Metoddeklaration. Parameteröverföring

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 1: TIDSSERIER.

Del A (obligatorisk för alla)

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Repetition C-programmering

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

OOP Objekt-orienterad programmering

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Föreläsning 1: Intro till kursen och programmering

Programmeringsteknik med C och Matlab

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

INSTALLATION AV VITEC MÄKLARSYSTEM. Studentversion

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Verktyg och Utvecklingsmiljö. Jochim von Hacht

tentaplugg.nu av studenter för studenter

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

2D1342 Programkonstruktion för F1, ht 2006

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

JAVAUTVECKLING LEKTION 4

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

Introduktion till MATLAB

Målet för D1 är att studenterna ska kunna följande: Använda några av de vanligaste PROC:arna. Sammanställa och presentera data i tabeller och grafiskt

HI1024 Programmering, grundkurs TEN

Föreläsning REPETITION & EXTENTA

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

TSBB14 Laboration: Intro till Matlab 1D

Transkript:

Litteratur Statistisk Programmering Programmering i R Göran Broström gb@stat.umu.se Statistiska institutionen Umeå universitet 901 87 Umeå Läs An Introduction to R. Dalgaard (2002): Introductory Statistics with R, Springer. Venables & Ripley (2002): Modern Applied Statistics with S, Fourth Edition. Springer. Venables & Ripley (2000): S Programming. Springer. (i stigande svårighetsgrad ). Statistisk Programmering, hösten 2002 p.1/24 Statistisk Programmering, hösten 2002 p.2/24 Logiska AND och OR I villkorssatser: &&: AND : OR if ( (x >= 1) && (x <= 2) )... Vektoriserande: &: AND : OR x.sub <- x[(x >= 1) & (x <= 2)] Funktioner i R En funktion f saknar sidoeffekter om > y <- f(x) endast ändrar/skapar y. Önskvärd egenskap, oftast. Tips: Använd parenteser och mellanslag flitigt!! Statistisk Programmering, hösten 2002 p.3/24 Statistisk Programmering, hösten 2002 p.4/24

Funktioner i R Enda sättet att returnera ett värde från en funktion är via sista raden. I R vet vektorer hur långa de är! Lexical scoping I R vet funktioner var de är definierade, och de har tillgång till objekt definierade där! Var letas en variabel? Jo, 1. Lokal variabel. 2. I argumentlistan. 3. Den definierande miljön. Obs: gäller variabler till höger om <-. Variabler i den definierande (eller anropande) miljön kan inte förändras (inga sidoeffekter)! Statistisk Programmering, hösten 2002 p.5/24 Statistisk Programmering, hösten 2002 p.6/24 Lazy evaluation Funktionsargument C, Fortran: En variabel i argumentlistan utvärderas vid anropet. R: En variabel i argumentlistan utvärderas när den behövs! aktuellt argument utvärderas i anropande miljön (parent frame). frånvarande (default) argument utvärderas i funktionsmiljön (local frame). En lazy attityd även här: Endast pekare (adresser) till argumenten skickas till funktionen. Om ett argument modifieras i funktionen tas en kopia som modifieras. Värdet i anropande program ändras ej! Inga sidoeffekter. Statistisk Programmering, hösten 2002 p.7/24 Statistisk Programmering, hösten 2002 p.8/24

Flödeskontroll, while Flödeskontroll, repeat Newtons metod för rotutdragning : square.root <- function(y){ if (y < 0) stop("negative values no-no") x <- y / 2 while ( abs(x * x - y) > 1e-10 ) x <- (x + y/x) / 2 x Det kan hända att en while-loop inte genomlöps någon gång. square.root <- function(y){ if (y < 0) stop("negative values no-no") x <- y / 2 repeat{ x <- (x + y / x) / 2 if ( abs(x * x - y) < 1e-10 ) break y x repeat-loopen genomlöps minst en gång. Statistisk Programmering, hösten 2002 p.9/24 Statistisk Programmering, hösten 2002 p.10/24 Flödeskontroll, for Sammansatta uttryck > x <- seq(0, 1,.05) > plot(x, x, ylab = "y", type = "l", + main = "Power curves") > for (j in 2:8) lines(x, xˆj) repeat{ x <- (x+y/x)/2 if (abs(x*x-y) < 1e-10) break Power curves Kallas ett sammansatt uttryck. Värdet är värdet av sista uttrycket. y 0.0 0.4 0.8 Rekommendation: Använd alltid { i samband med for, while och repeat! 0.0 0.2 0.4 0.6 0.8 1.0 x Statistisk Programmering, hösten 2002 p.11/24 Statistisk Programmering, hösten 2002 p.12/24

Villkorliga uttryck, if Villkorliga uttryck, ifelse appr.eq <- function(x, y){ identical(all.equal(x, y), TRUE) if (appr.eq(x, y)){ do.something else if (x < y){ do.something.else else{ stop("y can t be smaller than x") > x <- ifelse(x < 0, 0, x) ersätter alla negativa värden i vektorn x med 0 (noll). Vektoriserad version av if. for (i in 1:length(x)){ if (x[i] < 0){ x[i] <- 0 x <- pmax(x, 0) ger också önskat resultat. Statistisk Programmering, hösten 2002 p.13/24 Statistisk Programmering, hösten 2002 p.14/24 Kategoriska variabler, factor apply, lapply och sapply En faktor har nivåer (level). Exempel: > pain <- c(0, 3, 2, 2, 1) > f.pain <- factor(pain, levels = 0:3) > levels(f.pain) <- + c("none", "mild", "medium", "severe") En användbar funktion är relevel, som väljer (ny) referenskategori. > f.pain <- relevel(f.pain, ref = "medium") Exempel: X matris: > apply(x, 2, mean) vektor av kolumnmedelvärden. X lista: lapply(x, quantile, probs = (1:3)/4) lista av kvartiler. sapply: Användarvänlig version av lapply. Statistisk Programmering, hösten 2002 p.15/24 Statistisk Programmering, hösten 2002 p.16/24

tapply > library(mass) > data(painters) > attach(painters) > tapply(composition, School, sum) A B C D E F G H 104 73 79 91 95 29 97 56 Läs hjälpsidorna och experimentera med apply-familjen! Egna R-bibliotek 1. Skapa en katalog my.package. 2. Skapa underkatalogerna R och man. 3. Lägg R-funktioner i R och dokumentation i man. 4. skapa filen DESCRIPTION i my.package 5. I my.package, > cd.. > Rcmd check my.package > Rcmd build my.package > Rcmd install my.package XX.tar.gz Statistisk Programmering, hösten 2002 p.17/24 Statistisk Programmering, hösten 2002 p.18/24 Package: Filen DESCRIPTION my.package Version: 0.1 License: GPL version 2 or newer Description: For doing my favourite tricks Title: My package Author: Göran Broström Maintainer: Göran Broström <gb@stat.umu.se> är obligatoriska rader. I R: > prompt(funk) skapar en prototyp funk.rd Editera den och spara i my.package\man Dokumentation Upprepa för varje funktion i my.package. Se Writing R Extensions för detaljer! Statistisk Programmering, hösten 2002 p.19/24 Statistisk Programmering, hösten 2002 p.20/24

Bygga och installera my.package R-bibliotek med kompilerad kod I my.package: C:\home\R\my.package> cd.. C:\home\R> Rcmd check my.package C:\home\R> Rcmd build my.package C:\home\R> Rcmd INSTALL my.package 0.1.tar.gz Nu är my.package klart att använda! 1. I my.package, skapa katalogen src 2. Lägg C/Fortran-kod i src 3. Anropa C-kod med.c( ) i R. 4. Anropa Fortran-kod med.fortran( ) i R. 5. I katalogen R: filen zzz.r:.first.lib <- function(lib, pkg){ library.dynam( my.package, pkg, lib) Statistisk Programmering, hösten 2002 p.21/24 Statistisk Programmering, hösten 2002 p.22/24 Exempel med kompilerad kod Uppgifter till lektion 3 R-FUNKTION falt <- function(x, y){.c("falta ", as.integer(length(x)), as.double(x), as.integer(length(y)), as.double(y), z = double(length(x) + length(y) - 1), PACKAGE = my.package )$z C-FUNKTION void falta(int *nx, double *x, int *ny, double *y, double *z){... 1. Läs readme.packages, som finns i C:\Program\R\rw1061. Från Ripleys portal, installera tools.zip, packa upp i C:\bin Perl från activestate. MinGW-2.0.0-3.exe, följ Ripleys anvisningar. Microsoft HTML Help Workshop. Sökvägar måste sättas! 2. Testa installationen genom att installera ett litet bibliotek med C- eller Fortran-kod. Statistisk Programmering, hösten 2002 p.23/24 Statistisk Programmering, hösten 2002 p.24/24