Bioinformatyka VI Programowanie Języku R
WEKTORY R jest językiem wektorowym - wszystkie elementarne struktury danych są wektorami Nawet zmienne zawierające jeden obiekt są wektorami o długości 1
WEKTORY Podstawowe typy wektorów numeryczne (liczby podwójnej precyzji) liczby całkowite (integer) napisy (char) logiczne (TRUE/FALSE) data/czas nominalne (kategoryczne)
WEKTORY Podstawowe typy wektorów numeryczne (liczby podwójnej precyzji) liczby całkowite (integer) > c(1,2,3,4,5)->x > is.numeric(x) [1] TRUE > is.integer(x) [1] FALSE > c(1l,2l,3l,4l,5l)->i > is.numeric(i) [1] TRUE > is.integer(i) [1] TRUE >
WEKTORY numeryczne (liczby podwójnej precyzji) liczby całkowite (integer) W praktyce używany jest niemal wyłącznie typ numeryczny - operacje na liczbach całkowitych działają tak samo. > i/7 [1] 0.1428571 0.2857143 0.4285714 0.5714286 0.7142857 > x/7 [1] 0.1428571 0.2857143 0.4285714 0.5714286 0.7142857 > x %% 3 [1] 1 2 0 1 2 > i %% 3 [1] 1 2 0 1 2 > i %/% 3 [1] 0 0 1 1 1 > x %/% 3 [1] 0 0 1 1 1
WEKTORY Typ integer może przydać się przy przekazywaniu danych między modułami napisanymi w innych językach (C). Jest również domyślnie generowany przez operację `:` która tworzy sekwencje stosowaną w iteratorach > x15<-c(1,2,3,4,5) > i15<-1:5 > str(x15) num [1:5] 1 2 3 4 5 > str(i15) int [1:5] 1 2 3 4 5
WEKTORY Typ integer może przydać się przy przekazywaniu danych między modułami napisanymi w innych językach (C). Jest również domyślnie generowany przez operację `:` która tworzy sekwencje stosowaną w iteratorach > x15<-c(1,2,3,4,5) > i15<-1:5 > str(x15) num [1:5] 1 2 3 4 5 > str(i15) int [1:5] 1 2 3 4 5 > x1e6 <- 0.9999e6:1.0001e6 > str(x1e6) int [1:201] 999900 999901 999902 999903 999904 999905 999906 999907 999908 999909...
WEKTORY Nawet zmienne zawierające jeden obiekt są wektorami o długości 1 > str(x1e6) int [1:201] 999900 999901 999902 999903 999904 999905 999906 999907 999908 999909... > length(x1e6) [1] 201 > x<-1 > length(x) [1] 1 > str(1) num 1 > x[1] [1] 1
WEKTORY Tworzenie wektorów tworzenie przez użycie funkcji c() operacja `:` zastosowanie funkcji seq() > x1<-c(22,23,24,25,26) > x2<-22:26 > x3<-seq(from=22,to=26) > x3 [1] 22 23 24 25 26 > x2 [1] 22 23 24 25 26 > x1 [1] 22 23 24 25 26
WEKTORY Tworzenie wektorów tworzenie przez użycie funkcji c() operacja `:` zastosowanie funkcji seq() > x7<-1:7 > x5<-1:5 > c(x7,x5)->x75 > x75 [1] 1 2 3 4 5 6 7 1 2 3 4 5 > c(1:3,17:22,83:74)->x19 > length(x19) [1] 19 > x19 [1] 1 2 3 17 18 19 20 21 22 83 82 81 80 79 78 77 76 75 74
WEKTORY Funkcja seq() > seq(from=22,to=26) [1] 22 23 24 25 26 > seq(from=22,by=1,length.out=5) [1] 22 23 24 25 26 > seq(from=26,by=-1,length.out=5) [1] 26 25 24 23 22 > seq(from=26,by=-1.5,length.out=5) [1] 26.0 24.5 23.0 21.5 20.0 > seq(from=0.33,by=0.17,to=2.18) [1] 0.33 0.50 0.67 0.84 1.01 1.18 1.35 1.52 1.69 1.86 2.03 > seq(from=0.33,by=0.17,to=2.25) [1] 0.33 0.50 0.67 0.84 1.01 1.18 1.35 1.52 1.69 1.86 2.03 2.20
WEKTORY LOGICZNE > x10<-runif(10) > x10 [1] 0.05399084 0.53993393 0.60492961 0.17366489 0.74624543 0.39407939 0.18500973 0.92854452 0.49957395 0.02079991 > x10>0.5 [1] FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE > as.numeric(x10>0.5) [1] 0 1 1 0 1 0 0 1 0 0 > x10>0.5 ->Mask > Mask [1] FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE > str(mask) logi [1:10] FALSE TRUE TRUE FALSE TRUE FALSE...
WEKTORY LOGICZNE > x10<-runif(10) > x10 [1] 0.05399084 0.53993393 0.60492961 0.17366489 0.74624543 0.39407939 0.18500973 0.92854452 0.49957395 0.02079991 > x10>0.5
GENEROWANIE ROZKŁADÓW Jednorodny Beta Histogram of rnorm(1e+05, 20, 0.3) Dwumianowy Normalny > x10<-runif(10) > xbeta <- rbeta(3000,4,8) > xbern <- rbinom(30,100000,0.3333) > xnorm <- rnorm(100000,20,0.3) Frequency 0 2000 4000 6000 8000 10000 12000 19.0 19.5 20.0 20.5 21.0 rnorm(1e+05, 20, 0.3)
GENEROWANIE ROZKŁADÓW For the beta distribution see dbeta. For the binomial (including Bernoulli) distribution see dbinom. For the Cauchy distribution see dcauchy. For the chi-squared distribution see dchisq. For the exponential distribution see dexp. For the F distribution see df. For the gamma distribution see dgamma. For the geometric distribution see dgeom. (This is also a special case of the negative binomial.) For the hypergeometric distribution see dhyper. For the log-normal distribution see dlnorm. For the multinomial distribution see dmultinom. For the negative binomial distribution see dnbinom. For the normal distribution see dnorm. For the Poisson distribution see dpois. For the Student's t distribution see dt. For the uniform distribution see dunif. For the Weibull distribution see dweibull.
WYKRESY > X<-runif(100) > Y<-runif(100) > plot(x,y,col=1,cex=1,pch=1) Y 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 X
> X<-runif(100) > Y<-runif(100) > plot(x,y,col=1,cex=1,pch=1) > plot(x,y,col=1,cex=2,pch=1) WYKRESY 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 X Y 0.0 0.2 0.4 0.6 0.8 1.0 Y 0.0 0.2 0.4 0.6 0.8 1.0 X
> X<-runif(100) > Y<-runif(100) > plot(x,y,col=1,cex=1,pch=1) > plot(x,y,col=1,cex=2,pch=1) > plot(x,y,col=1,cex=2,pch=2) WYKRESY 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 X Y 0.0 0.2 0.4 0.6 0.8 1.0 Y Y 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 X 0.0 0.2 0.4 0.6 0.8 1.0 X
> X<-runif(100) > Y<-runif(100) > plot(x,y,col=1,cex=1,pch=1) > plot(x,y,col=1,cex=2,pch=1) > plot(x,y,col=1,cex=2,pch=1) WYKRESY 0.0 0.2 0.4 0.6 0.8 1.0 > plot(x,y,col=1,cex=2,pch=1) 0.0 0.2 0.4 0.6 0.8 1.0 X Y 0.0 0.2 0.4 0.6 0.8 1.0 Y 0.0 0.2 0.4 0.6 0.8 1.0 Y Y 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 X 0.0 0.2 0.4 0.6 0.8 1.0 X 0.0 0.2 0.4 0.6 0.8 1.0 X
WYKRESY > X1<-runif(100) > Y1<-runif(100) > Y2<-runif(100) > X2<-runif(100) > X3<-runif(100) > Y3<-runif(100) > plot(x,y,col=1,cex=2,pch=1) Y 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 X
> X1<-runif(100) > Y1<-runif(100) > Y2<-runif(100) > X2<-runif(100) > X3<-runif(100) > Y3<-runif(100) > plot(x,y,col=1,cex=2,pch=1) > points(x1,y1,col=2,cex=2,pch=2) WYKRESY Y 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 X
> X1<-runif(100) > Y1<-runif(100) > Y2<-runif(100) > X2<-runif(100) > X3<-runif(100) > Y3<-runif(100) > plot(x,y,col=1,cex=2,pch=1) > points(x1,y1,col=2,cex=2,pch=2) > points(x2,y2,col=3,cex=2,pch=3) > points(x3,y3,col=4,cex=2,pch=4) WYKRESY Y 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 X
WYKRESY > plot( + seq(from=-6,to=6,by=0.01), + dnorm(seq(from=-6,to=6,by=0.01)),cex=0.1)
ROZKŁAD NORMALNY I STUDENTA dnorm(seq(from = -6, to = 6, by = 0.01)) 0.0 0.1 0.2 0.3 0.4-6 -4-2 0 2 4 6 seq(from = -6, to = 6, by = 0.01)
WYKRESY > plot( + seq(from=-6,to=6,by=0.01), + dnorm(seq(from=-6,to=6,by=0.01)),cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),3),col=2,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),6),col=3,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),12),col=4,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),24),col=5,cex=0.1)
ROZKŁAD NORMALNY I STUDENTA dnorm(seq(from = -6, to = 6, by = 0.01)) 0.0 0.1 0.2 0.3 0.4-6 -4-2 0 2 4 6 seq(from = -6, to = 6, by = 0.01)
ROZKŁAD NORMALNY I STUDENTA dnorm(seq(from = -6, to = 6, by = 0.01)) 0.0 0.1 0.2 0.3 0.4-6 -4-2 0 2 4 6 seq(from = -6, to = 6, by = 0.01)
WYKRESY > plot( + seq(from=-6,to=6,by=0.01), + dnorm(seq(from=-6,to=6,by=0.01)),cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),3),col=2,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),6),col=3,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),12),col=4,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),24),col=5,cex=0.1)
ROZKŁAD NORMALNY I STUDENTA dnorm(seq(from = -6, to = 6, by = 0.01)) 0.0 0.1 0.2 0.3 0.4-6 -4-2 0 2 4 6 seq(from = -6, to = 6, by = 0.01)
ROZKŁAD NORMALNY I STUDENTA dnorm(seq(from = -6, to = 6, by = 0.01)) 0.0 0.1 0.2 0.3 0.4-6 -4-2 0 2 4 6 seq(from = -6, to = 6, by = 0.01)
WYKRESY > plot( + seq(from=-6,to=6,by=0.01), + dnorm(seq(from=-6,to=6,by=0.01)),cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),3),col=2,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),6),col=3,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),12),col=4,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),24),col=5,cex=0.1)
ROZKŁAD NORMALNY I STUDENTA dnorm(seq(from = -6, to = 6, by = 0.01)) 0.0 0.1 0.2 0.3 0.4-6 -4-2 0 2 4 6 seq(from = -6, to = 6, by = 0.01)
0.3 0.2 0.1 0.0 dnorm(seq(from = -6, to = 6, by = 0.01)) 0.4 ROZKŁAD NORMALNY I STUDENTA -6-4 -2 0 2 4 6 seq(from = -6, to = 6, by = 0.01) Warszawa 16.05.2015
WYKRESY > plot( + seq(from=-6,to=6,by=0.01), + dnorm(seq(from=-6,to=6,by=0.01)),cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),3),col=2,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),6),col=3,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),12),col=4,cex=0.1) > points( + seq(from=-6,to=6,by=0.01), + dt(seq(from=-6,to=6,by=0.01),24),col=5,cex=0.1)
0.3 0.2 0.1 0.0 dnorm(seq(from = -6, to = 6, by = 0.01)) 0.4 ROZKŁAD NORMALNY I STUDENTA -6-4 -2 0 2 4 6 seq(from = -6, to = 6, by = 0.01) Warszawa 16.05.2015
0.3 0.2 0.1 0.0 dnorm(seq(from = -6, to = 6, by = 0.01)) 0.4 ROZKŁAD NORMALNY I STUDENTA -6-4 -2 0 2 4 6 seq(from = -6, to = 6, by = 0.01) Warszawa 16.05.2015
ROZKŁAD NORMALNY I STUDENTA dnorm(seq(from = -6, to = 6, by = 0.01)) 0.0 0.1 0.2 0.3 0.4-6 -4-2 0 2 4 6 seq(from = -6, to = 6, by = 0.01)
WEKTORY LOGICZNE > x10<-runif(10) > x10 [1] 0.05399084 0.53993393 0.60492961 0.17366489 0.74624543 0.39407939 0.18500973 0.92854452 0.49957395 0.02079991 > x10>0.5 [1] FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE > x10>0.5 ->Mask > Mask [1] FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE > str(mask) logi [1:10] FALSE TRUE TRUE FALSE TRUE FALSE...
WEKTORY LOGICZNE > x10>0.5 ->Mask > Mask [1] FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE > str(mask) logi [1:10] FALSE TRUE TRUE FALSE TRUE FALSE... > as.numeric(mask) [1] 0 1 1 0 1 0 0 1 0 0 > sum(mask) [1] 4 >
WEKTORY LOGICZNE > x10[mask] [1] 0.5399339 0.6049296 0.7462454 0.9285445 > x10[x10>0.5] [1] 0.5399339 0.6049296 0.7462454 0.9285445 > which(mask) [1] 2 3 5 8 > which(x10>0.5) [1] 2 3 5 8
WEKTORY ZNAKOWE > napis<-"bioinformatyka" > napis [1] "Bioinformatyka" > napis2<c("b","i","o","i","n","f","o","r","m","a","t","y","k","a") > napis2 [1] "B" "i" "o" "i" "n" "f" "o" "r" "m" "a" "t" "y" "k" "a" > napis3<-c("bio","in","for","ma","ty","ka") > napis3 [1] "Bio" "in" "for" "ma" "ty" "ka"
WEKTORY ZNAKOWE > str(napis) chr "Bioinformatyka" > str(napis2) chr [1:14] "B" "i" "o" "i" "n" "f" "o" "r" "m" "a" "t" "y" "k" "a" > str(napis3) chr [1:6] "Bio" "in" "for" "ma" "ty" "ka" > napis2[3] [1] "o" > napis3[3] [1] "for" > napis[3] [1] NA
WEKTORY ZNAKOWE > napis4<-c("b","io","inf","orma","tyka ") > napis4 [1] "B" "io" "inf" "orma" "tyka " > str(napis4) chr [1:5] "B" "io" "inf" "orma" "tyka > napis2 [1] "B" "i" "o" "i" "n" "f" "o" "r" "m" "a" "t" "y" "k" "a" > paste(napis2,collapse="") [1] "Bioinformatyka" > paste(napis2,collapse=" ") [1] "B i o i n f o r m a t y k a" > paste(napis2,collapse="-") [1] "B-i-o-i-n-f-o-r-m-a-t-y-k-a"
WEKTORY ZNAKOWE > AA<-c("a","aa","aaa","aaaa","aaaaa","aaaaaa") > BB<-c("b","bb") > paste(aa,bb) [1] "a b" "aa bb" "aaa b" "aaaa bb" [5] "aaaaa b" "aaaaaa bb" > paste(aa,bb,sep="-") [1] "a-b" "aa-bb" "aaa-b" [5] "aaaa-bb" "aaaaa-b" "aaaaaa-bb" > paste(aa,nb,sep="-",collapse=" ") [1] "a-b aa-bb aaa-b aaaa-bb aaaaa-b aaaaaa-bb" > paste(aa,bb,sep="-",collapse="") [1] "a-baa-bbaaa-baaaa-bbaaaaa-baaaaaa-bb"
CZAS >> Sys.time() [1] "2015-05-17 12:23:11 CEST" > options(digits.secs=2) > Sys.time() [1] "2015-05-17 12:23:42.87 CEST"
CZAS > start.time<-sys.time() > end.time<-sys.time() > start.time [1] "2015-05-17 12:24:44.56 CEST" > end.time [1] "2015-05-17 12:24:53.26 CEST" > end.time-start.time Time difference of 8.698818 secs > as.numeric(end.time-start.time) [1] 8.698818
> z <- as.posixlt(sys.time()) > zz <- Sys.time() > z [1] "2015-05-17 13:12:30.37 CEST" > zz [1] "2015-05-17 13:12:39.48 CEST" > unclass(zz) [1] 1431861159 > unclass(z) $sec [1] 30.37641 $min [1] 12 $hour [1] 13 $mday [1] 17 $mon [1] 4 $year [1] 115 $wday [1] 0 $yday [1] 136 $isdst [1] 1 attr(,"tzone") [1] "" "CET" "CEST" CZAS
CZAS > z <- as.posixlt(sys.time()) > zz <- Sys.time() > z [1] "2015-05-17 13:12:30.37 CEST" > zz [1] "2015-05-17 13:12:39.48 CEST" > unclass(zz) [1] 1431861159 > unlist(unclass(z)) sec min hour mday mon year 30.37641 12.00000 13.00000 17.00000 4.00000 115.00000 wday yday isdst 0.00000 136.00000 1.00000
CZAS > z [1] "2015-05-17 13:12:30.37 CEST" > zz [1] "2015-05-17 13:12:39.48 CEST" > unclass(zz) [1] 1431861159 > unlist(unclass(z)) sec min hour mday mon year 30.37641 12.00000 13.00000 17.00000 4.00000 115.00000 wday yday isdst 0.00000 136.00000 1.00000 > unclass(zz) [1] 1431861159 > unclass(zz)-1431861159 [1] 0.4873409
Class "POSIXct" represents the (signed) number of seconds since the beginning of 1970 as a numeric vector. CZAS Class "POSIXlt" is a named list of vectors represenlng sec 0 61: seconds min 0 59: minutes hour 0 23: hours mday 1 31: day of the month mon 0 11: months aoer the first of the year. year Years since 1900. wday 0 6 day of the week, starlng on Sunday. yday 0 365: day of the year. isdst Daylight savings lme flag. Posilve if in force, zero if not, negalve if unknown.
CZAS > MyTime_1 [1] "2015-07-10 11:00:00 Europe/Warsaw" > MyTime_2 [1] "2015-07-10 11:00:00" > MyTime_3 [1] "2015-07-10 11:00:00 UTC > as.posixct(mytime_1) [1] "2015-07-10 11:00:00 CEST" > as.posixct(mytime_2) [1] "2015-07-10 11:00:00 CEST" > as.posixct(mytime_3) [1] "2015-07-10 11:00:00 CEST"
CZAS > MyTime_1 [1] "2015-07-10 11:00:00 Europe/Warsaw" > MyTime_2 [1] "2015-07-10 11:00:00" > MyTime_3 [1] "2015-07-10 11:00:00 UTC" > > as.posixlt(mytime_3) [1] "2015-07-10 11:00:00" > as.posixlt(mytime_2) [1] "2015-07-10 11:00:00" > as.posixlt(mytime_1) [1] "2015-07-10 11:00:00"
CZAS > as.posixct(mytime_1,tz="utc") [1] "2015-07-10 11:00:00 UTC" > as.posixct(mytime_1,tz="europe/london") [1] "2015-07-10 11:00:00 BST" > as.posixct(mytime_1,tz="europe/warsaw") [1] "2015-07-10 11:00:00 CEST" > as.posixct(mytime_1,tz="europe/kiev") [1] "2015-07-10 11:00:00 EEST"
CZAS > as.numeric(as.posixct(mytime_1,tz="utc")) [1] 1436526000 > as.numeric(as.posixct(mytime_1,tz="utc"))-1436526000 [1] 0 > as.numeric(as.posixct(mytime_1,tz="europe/london"))-1436526000 [1] -3600 > as.numeric(as.posixct(mytime_1,tz="europe/warsaw"))-1436526000 [1] -7200 > as.numeric(as.posixct(mytime_1,tz="europe/kiev"))-1436526000 [1] -10800
WEKTORY NOMINALNE > str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1... $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1... > str(esoph) 'data.frame': 88 obs. of 5 variables: $ agegp : Ord.factor w/ 6 levels "25-34"<"35-44"<..: 1 1 1 1 1 1 1 1 1 1... $ alcgp : Ord.factor w/ 4 levels "0-39g/day"<"40-79"<..: 1 1 1 1 2 2 2 2 3 3... $ tobgp : Ord.factor w/ 4 levels "0-9g/day"<"10-19"<..: 1 2 3 4 1 2 3 4 1 2... $ ncases : num 0 0 0 0 0 0 0 0 0 0... $ ncontrols: num 40 10 6 5 27 7 4 7 2 1...
WEKTORY NOMINALNE > levels(iris$species) [1] "setosa" "versicolor" "virginica" > levels(esoph$agegp) [1] "25-34" "35-44" "45-54" "55-64" "65-74" "75+" > levels(esoph$alcgp) [1] "0-39g/day" "40-79" "80-119" "120+" > levels(esoph$tobgp) [1] "0-9g/day" "10-19" "20-29" "30+"
WEKTORY NOMINALNE > as.numeric(esoph$agegp) [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 [34] 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 [67] 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 > as.numeric(esoph$alcgp) [1] 1 1 1 1 2 2 2 2 3 3 3 4 4 4 4 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 1 1 1 [34] 1 2 2 2 2 3 3 3 3 4 4 4 4 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 1 1 1 1 [67] 2 2 2 3 3 3 3 4 4 4 4 1 1 1 2 2 2 2 3 3 4 4 > as.numeric(esoph$tobgp) [1] 1 2 3 4 1 2 3 4 1 2 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 1 2 3 [34] 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 [67] 1 2 3 1 2 3 4 1 2 3 4 1 2 4 1 2 3 4 1 2 1 2 >
WEKTORY NOMINALNE > oceny<-c("3","3.5","3","5","5","5","4","4","2","4.5") > as.factor(oceny)->oceny > oceny [1] 3 3.5 3 5 5 5 4 4 2 4.5 Levels: 2 3 3.5 4 4.5 5 > as.numeric(oceny) [1] 2 3 2 6 6 6 4 4 1 5 >
WEKTORY NOMINALNE > oceny<c("dobry","dobry","dostateczny","niedostateczny","dostateczny +","bardzo dobry","bardzo dobry","bardzo dobry","dobry +","dostateczny +") > as.factor(oceny)->oceny > oceny [1] dobry dobry dostateczny niedostateczny [5] dostateczny + bardzo dobry bardzo dobry bardzo dobry [9] dobry + dostateczny + 6 Levels: bardzo dobry dobry dobry + dostateczny... niedostateczny > as.numeric(oceny) [1] 2 2 4 6 5 1 1 1 3 5 > levels(oceny) [1] "bardzo dobry" "dobry" "dobry +" [4] "dostateczny" "dostateczny +" "niedostateczny"
MACIERZE > 1:60->M2d > dim(m2d)<-c(6,10) > M2d [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 1 7 13 19 25 31 37 43 49 55 [2,] 2 8 14 20 26 32 38 44 50 56 [3,] 3 9 15 21 27 33 39 45 51 57 [4,] 4 10 16 22 28 34 40 46 52 58 [5,] 5 11 17 23 29 35 41 47 53 59 [6,] 6 12 18 24 30 36 42 48 54 60
MACIERZE > dim(m2d)<-c(10,6) > M2d [,1] [,2] [,3] [,4] [,5] [,6] [1,] 1 11 21 31 41 51 [2,] 2 12 22 32 42 52 [3,] 3 13 23 33 43 53 [4,] 4 14 24 34 44 54 [5,] 5 15 25 35 45 55 [6,] 6 16 26 36 46 56 [7,] 7 17 27 37 47 57 [8,] 8 18 28 38 48 58 [9,] 9 19 29 39 49 59 [10,] 10 20 30 40 50 60
MACIERZE > M2d[3] [1] 3 > M2d[,3] [1] 21 22 23 24 25 26 27 28 29 30 > M2d[3,] [1] 3 13 23 33 43 53 > colnames(m2d)<-c("x1","x2","x3","x4","x5","x6") > M2d[,"x3"] [1] 21 22 23 24 25 26 27 28 29 30
MACIERZE > M3d<-1:60 > dim(m3d)<-c(4,5,3) > M3d,, 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20,, 2 [,1] [,2] [,3] [,4] [,5] [1,] 21 25 29 33 37 [2,] 22 26 30 34 38 [3,] 23 27 31 35 39 [4,] 24 28 32 36 40,, 3 [,1] [,2] [,3] [,4] [,5] [1,] 41 45 49 53 57 [2,] 42 46 50 54 58 [3,] 43 47 51 55 59 [4,] 44 48 52 56 60
MACIERZE > M3d[3] [1] 3 > M3d[3,,] [,1] [,2] [,3] [1,] 3 23 43 [2,] 7 27 47 [3,] 11 31 51 [4,] 15 35 55 [5,] 19 39 59,, 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20,, 2 [,1] [,2] [,3] [,4] [,5] [1,] 21 25 29 33 37 [2,] 22 26 30 34 38 [3,] 23 27 31 35 39 [4,] 24 28 32 36 40,, 3 [,1] [,2] [,3] [,4] [,5] [1,] 41 45 49 53 57 [2,] 42 46 50 54 58 [3,] 43 47 51 55 59 [4,] 44 48 52 56 60
MACIERZE > M3d[3] [1] 3 > M3d[,3,] [,1] [,2] [,3] [1,] 9 29 49 [2,] 10 30 50 [3,] 11 31 51 [4,] 12 32 52,, 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20,, 2 [,1] [,2] [,3] [,4] [,5] [1,] 21 25 29 33 37 [2,] 22 26 30 34 38 [3,] 23 27 31 35 39 [4,] 24 28 32 36 40,, 3 [,1] [,2] [,3] [,4] [,5] [1,] 41 45 49 53 57 [2,] 42 46 50 54 58 [3,] 43 47 51 55 59 [4,] 44 48 52 56 60
MACIERZE > M3d[3] [1] 3 > M3d[,,3] [,1] [,2] [,3] [,4] [,5] [1,] 41 45 49 53 57 [2,] 42 46 50 54 58 [3,] 43 47 51 55 59 [4,] 44 48 52 56 60,, 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20,, 2 [,1] [,2] [,3] [,4] [,5] [1,] 21 25 29 33 37 [2,] 22 26 30 34 38 [3,] 23 27 31 35 39 [4,] 24 28 32 36 40,, 3 [,1] [,2] [,3] [,4] [,5] [1,] 41 45 49 53 57 [2,] 42 46 50 54 58 [3,] 43 47 51 55 59 [4,] 44 48 52 56 60
NAZWY W WEKTORACH > str(islands) Named num [1:48] 11506 5500 16988 2968 16... - attr(*, "names")= chr [1:48] "Africa" "Antarctica" "Asia" "Australia"... > islands[1:6] Africa Antarctica Asia Australia 11506 5500 16988 2968 Axel Heiberg Baffin 16 184
NAZWY W WEKTORACH > names(sort(islands,decreasing=true))[1:10] [1] "Asia" "Africa" "North America" [4] "South America" "Antarctica" "Europe" [7] "Australia" "Greenland" "New Guinea" [10] "Borneo"
NAZWY W WEKTORACH > names(sort(islands,decreasing=true))[1:10] [1] "Asia" "Africa" "North America" [4] "South America" "Antarctica" "Europe" [7] "Australia" "Greenland" "New Guinea" [10] "Borneo" > sort(islands,decreasing=true)[1:10] Asia Africa North America South America 16988 11506 9390 6795 Antarctica Europe Australia Greenland 5500 3745 2968 840 New Guinea Borneo 306 280
NAZWY W WEKTORACH > names(sort(islands,decreasing=true))[1:10] [1] "Asia" "Africa" "North America" [4] "South America" "Antarctica" "Europe" [7] "Australia" "Greenland" "New Guinea" [10] "Borneo" >sort(islands,decreasing=true)[8:17] Greenland New Guinea Borneo Madagascar Baffin 840 306 280 227 184 Sumatra Honshu Britain Ellesmere Victoria 183 89 84 82 82
FUNKCJE AddTwoNumbers<-function(x,y){ print(x) print(y) z<-x+y print(z) return(z) } > AddTwoNumbers(2,44) [1] 2 [1] 44 [1] 46 [1] 46 >
FUNKCJE MyAvg<-function(x,y){ a1<-(x+y)/2 a2<-sqrt(x*y) a3<-2/(1/x+1/y) return(list(arithmetic=a1,geometric=a2,harmonic=a3)) } > MyAvg(3,1) $arithmetic [1] 2 $geometric [1] 1.732051 $harmonic [1] 1.5
FUNKCJE MyAvg<-function(x=5,y=11){ a1<-(x+y)/2 a2<-sqrt(x*y) a3<-2/(1/x+1/y) return(list(arithmetic=a1,geometric=a2,harmonic=a3)) } > MyAvg() $arithmetic [1] 8 $geometric [1] 7.416198 $harmonic [1] 6.875
FUNKCJE Nie modyfikują argumentów Tworzą wewnętrzne kopie danych Nie mają efektów ubocznych Mogą przyjmować argumenty domyślne Mogą przyjmować argumenty niezdefiniowane dla danej funkcji > MyAvg(25,1,col=3) Błąd w MyAvg(25, 1, col = 3) : nieużywane argument(y) (col = 3)
FUNKCJE Mogą przyjmować argumenty niezdefiniowane dla danej funkcji MyAvg<-function(x,y,...){ a1<-(x+y)/2 a2<-sqrt(x*y) a3<-2/(1/x+1/y) return(list(arithmetic=a1,geometric=a2,harmonic=a3)) } > MyAvg(25,1) $arithmetic [1] 13 $geometric [1] 5 $harmonic [1] 1.923077
FUNKCJE Mogą przyjmować argumenty niezdefiniowane dla danej funkcji MyAvg<-function(x,y,...){ a1<-(x+y)/2 a2<-sqrt(x*y) a3<-2/(1/x+1/y) return(list(arithmetic=a1,geometric=a2,harmonic=a3)) } > MyAvg(25,1,col=3) $arithmetic [1] 13 $geometric [1] 5 $harmonic [1] 1.923077
WEJSCIE / WYJŚCIE "Sepal.Length";"Sepal.Width";"Petal.Length";"Petal.Width";"Species" > head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa > write.table(iris,file="iris.csv",sep=";") > system("head -5 iris.csv ) "1";5.1;3.5;1.4;0.2;"setosa" "2";4.9;3;1.4;0.2;"setosa" "3";4.7;3.2;1.3;0.2;"setosa" "4";4.6;3.1;1.5;0.2;"setosa" "5";5;3.6;1.4;0.2;"setosa"
WEJSCIE / WYJŚCIE > read.table(file="iris.csv",sep=";",header=true)->newiris > head(newiris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa >
WEJSCIE / WYJŚCIE > save(newiris,file="iris.rd") > rm(newiris) > ls() [1] "Iris" "iris.lm" "iris10" "MyAvg" "MySample" "rownames" "student1" "student2" [9] "team1" "Team2" "test" > load("iris.rd") > ls() [1] "Iris" "iris.lm" "iris10" "MyAvg" "MySample" "newiris" "rownames" "student1" [9] "student2" "team1" "Team2" "test"