1. feladat. Vektorok.
Hozzunk létre három vektort. Egy üres (0 elemű) numerikus vektort, egy 10 elemű vektort: 1, 2, ..., 10, és egy másik 10 elemű vektort: 10, 9, ..., 1. Fűzzük őket össze egyetlen vektorba!
v.1 <- numeric(0) # üres numerikus vektor
v.2 <- 1:10
v.3 <- 10:1
c(v.1, v.2, v.3) # vektorok összefűzése
[1] 1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1
2. feladat. Vektorok.
Hozzunk létre 4 vektort, amely a 4 fő vektortípust képviseli (karakteres, egész, numerikus, logikai)! Kérdezzük le ezen objektumok 3 fő tulajdonságát (típus, hossz, attribútum)! Az összes lehetőséget próbáljuk ki, amellyel a 4 vektorból kettőt összefűzhetünk egymással. Mi lesz a létrejövő vektorok típusa az automatikus konverzió során?
v.1 <- c("a", "b")
typeof(v.1); length(v.1); attributes(v.1)
[1] "character"
[1] 2
NULL
v.2 <- c(12L, 13L)
typeof(v.2); length(v.2); attributes(v.2)
[1] "integer"
[1] 2
NULL
v.3 <- c(1.4, 1.6)
typeof(v.3); length(v.3); attributes(v.3)
[1] "double"
[1] 2
NULL
v.4 <- c(T, F, T)
typeof(v.4); length(v.4); attributes(v.4)
[1] "logical"
[1] 3
NULL
v.5 <- c(v.1, v.2)
v.5; typeof(v.5); length(v.5); attributes(v.5)
[1] "a" "b" "12" "13"
[1] "character"
[1] 4
NULL
v.5 <- c(v.1, v.3)
v.5; typeof(v.5); length(v.5); attributes(v.5)
[1] "a" "b" "1.4" "1.6"
[1] "character"
[1] 4
NULL
v.5 <- c(v.1, v.4)
v.5; typeof(v.5); length(v.5); attributes(v.5)
[1] "a" "b" "TRUE" "FALSE" "TRUE"
[1] "character"
[1] 5
NULL
v.5 <- c(v.2, v.3)
v.5; typeof(v.5); length(v.5); attributes(v.5)
[1] 12.0 13.0 1.4 1.6
[1] "double"
[1] 4
NULL
v.5 <- c(v.2, v.4)
v.5; typeof(v.5); length(v.5); attributes(v.5)
[1] 12 13 1 0 1
[1] "integer"
[1] 5
NULL
v.5 <- c(v.3, v.4)
v.5; typeof(v.5); length(v.5); attributes(v.5)
[1] 1.4 1.6 1.0 0.0 1.0
[1] "double"
[1] 5
NULL
3. feladat. Vektorok.
Hozzunk létre egy 3 elemű numerikus vektort, amely Péter, Zoltán és Imre pontszámait tartalmazza. Kérdezzük le a vektor 3 jellemzőjét, majd változtassuk meg Péter névét Tamásra!
v.1 <- c(Péter=12, Zoltán=23, Imre=31)
v.1; typeof(v.1); length(v.1); attributes(v.1)
Péter Zoltán Imre
12 23 31
[1] "double"
[1] 3
$names
[1] "Péter" "Zoltán" "Imre"
names(v.1)[1] <- "Tamás"
v.1; typeof(v.1); length(v.1); attributes(v.1)
Tamás Zoltán Imre
12 23 31
[1] "double"
[1] 3
$names
[1] "Tamás" "Zoltán" "Imre"
4. feladat. Listák.
Bizonyítsuk, hogy a lista a legszabadabb adatszerkezet az R-ben. Hozzunk létre egy karakteres vektorból, egy numerikus mátrixból és egy logikai vektorból álló listát!
e.1 <- c("a", "b", "c")
e.2 <- matrix(1:12, nrow=2, byrow = T)
e.3 <- c(T, F, F)
L.1 <- list(e.1, e.2, e.3)
L.1; typeof(L.1); length(L.1); attributes(L.1)
[[1]]
[1] "a" "b" "c"
[[2]]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 3 4 5 6
[2,] 7 8 9 10 11 12
[[3]]
[1] TRUE FALSE FALSE
[1] "list"
[1] 3
NULL
5. feladat. Listák.
Hozzuk létre az előző feladat listáját, de gondoskodjunk a listelemek elnevezéséről is!
e.1 <- c("a", "b", "c")
e.2 <- matrix(1:12, nrow=2, byrow = T)
e.3 <- c(T, F, F)
L.1 <- list("nev"=e.1, pont=e.2, zsuri=e.3)
L.1; typeof(L.1); length(L.1); attributes(L.1)
$nev
[1] "a" "b" "c"
$pont
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 3 4 5 6
[2,] 7 8 9 10 11 12
$zsuri
[1] TRUE FALSE FALSE
[1] "list"
[1] 3
$names
[1] "nev" "pont" "zsuri"
6. feladat. Listák.
Hozzunk létre 3 listát és fűzzük őket össze ac()
függvénnyel! Mi történik, ha alist()
függvényt használjuk ugyanerre?
L.1 <- list(nev=c("a", "b"), pont=3:4)
L.2 <- list(kard=T, fej=c(3, 9, 11))
L.3 <- list(matrix(1:12, nrow=2, byrow = T), c(T, F))
L.4 <- c(L.1, L.2, L.3)
L.4; typeof(L.4); length(L.4); attributes(L.4)
$nev
[1] "a" "b"
$pont
[1] 3 4
$kard
[1] TRUE
$fej
[1] 3 9 11
[[5]]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 3 4 5 6
[2,] 7 8 9 10 11 12
[[6]]
[1] TRUE FALSE
[1] "list"
[1] 6
$names
[1] "nev" "pont" "kard" "fej" "" ""
L.4 <- list(L.1, L.2, L.3)
L.4; typeof(L.4); length(L.4); attributes(L.4)
[[1]]
[[1]]$nev
[1] "a" "b"
[[1]]$pont
[1] 3 4
[[2]]
[[2]]$kard
[1] TRUE
[[2]]$fej
[1] 3 9 11
[[3]]
[[3]][[1]]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 3 4 5 6
[2,] 7 8 9 10 11 12
[[3]][[2]]
[1] TRUE FALSE
[1] "list"
[1] 3
NULL
6. feladat. Listák.
Az előző példában létrehozott listából készítsünk vektort!
L.1 <- list(nev=c("a", "b"), pont=3:4)
L.2 <- list(kard=T, fej=c(3, 9, 11))
L.3 <- list(matrix(1:12, nrow=2, byrow = T), c(T, F))
L.4 <- list(L.1, L.2, L.3)
L.4; typeof(L.4); length(L.4); attributes(L.4)
[[1]]
[[1]]$nev
[1] "a" "b"
[[1]]$pont
[1] 3 4
[[2]]
[[2]]$kard
[1] TRUE
[[2]]$fej
[1] 3 9 11
[[3]]
[[3]][[1]]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 3 4 5 6
[2,] 7 8 9 10 11 12
[[3]][[2]]
[1] TRUE FALSE
[1] "list"
[1] 3
NULL
v.1 <- unlist(L.4)
v.1; typeof(v.1); length(v.1); attributes(v.1)
nev1 nev2 pont1 pont2 kard fej1 fej2 fej3
"a" "b" "3" "4" "TRUE" "3" "9" "11" "1"
"7" "2" "8" "3" "9" "4" "10" "5" "11"
"6" "12" "TRUE" "FALSE"
[1] "character"
[1] 22
$names
[1] "nev1" "nev2" "pont1" "pont2" "kard" "fej1" "fej2" "fej3"
[9] "" "" "" "" "" "" "" ""
[17] "" "" "" "" "" ""