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
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
> 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
WEKTORY LOGICZNE
GENEROWANIE ROZKŁADÓW
• Jednorodny
• Beta
• Dwumianowy
• Normalny
• …
> x10<-runif(10)
> xbeta <- rbeta(3000,4,8)
> xbern <- rbinom(30,100000,0.3333)
> xnorm <- rnorm(100000,20,0.3)
Histogram of rnorm(1e+05, 20, 0.3)
rnorm(1e+05, 20, 0.3)
Frequency
19.0 19.5 20.0 20.5 21.0
020004000600080001000012000
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)
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
WYKRESY
> X<-runif(100)
> Y<-runif(100)
> plot(X,Y,col=1,cex=1,pch=1)
> plot(X,Y,col=1,cex=2,pch=1)
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
WYKRESY
> 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)
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
WYKRESY
> 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)
> plot(X,Y,col=1,cex=2,pch=1) 0.0 0.0 0.2 0.4 0.6 0.8 1.0
0.20.40.60.81.0
X
Y
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
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)
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
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)
> points(X1,Y1,col=2,cex=2,pch=2)
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
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)
> points(X1,Y1,col=2,cex=2,pch=2)
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
> 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)
0.0 0.2 0.4 0.6 0.8 1.0
0.00.20.40.60.81.0
X
Y
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
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(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
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
ROZKŁAD NORMALNY I STUDENTA
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(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
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
ROZKŁAD NORMALNY I STUDENTA
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(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
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
ROZKŁAD NORMALNY I STUDENTA
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(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
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
ROZKŁAD NORMALNY I STUDENTA
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
ROZKŁAD NORMALNY I STUDENTA
-6 -4 -2 0 2 4 6
0.00.10.20.30.4
seq(from = -6, to = 6, by = 0.01)
dnorm(seq(from = -6, to = 6, by = 0.01))
> 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
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
> 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
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"
> 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
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
> 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
> 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
CZAS
Class "POSIXct" represents the (signed) number of seconds since the beginning of 1970 as a numeric vector.
!
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
CZAS
> 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
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
> 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”)
"Sepal.Length";"Sepal.Width";"Petal.Length";"Petal.Width";"Species"
"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"