Bevezetés az R-be 2.0 - Feladatgyűjtemény

Indexelés

1. példa. Vektor indexelése.
Írassuk ki egy 10 elemű vektor 3. elemét!

v.1 <- 11:20
v.1[3]
[1] 13

2. példa. Vektor indexelése.
Írassuk ki egy 10 elemű vektor 3. és 7. elemét!

v.1 <- 11:20
v.1[c(3,7)]
[1] 13 17

3. példa. Vektor indexelése.
Írassuk ki egy 10 elemű vektor 3. és 4. elemét!

v.1 <- 11:20
v.1[3:4]
[1] 13 14

4. példa. Vektor indexelése.
Írassuk ki egy 10 elemű vektor első 4 elemét!

v.1 <- 11:20
v.1[1:4]
[1] 11 12 13 14

5. példa. Vektor indexelése.
Változtassuk 100-ra egy 10 elemű vektor 3. elemét!

v.1 <- 11:20
v.1[3] <- 100
v.1
 [1]  11  12 100  14  15  16  17  18  19  20

6. példa. Vektor indexelése.
Változtassuk 100-ra egy 10 elemű vektor 3. és 7. elemét!

v.1 <- 11:20
v.1[c(3, 7)] <- 100
v.1
 [1]  11  12 100  14  15  16 100  18  19  20

7. példa. Vektor indexelése.
Változtassuk 100-ra egy 10 elemű vektor első 4 elemét!

v.1 <- 11:20
v.1[1:4] <- 100
v.1
 [1] 100 100 100 100  15  16  17  18  19  20

8. példa. Mátrix indexelése.
Írassuk ki egy 3 sorból és 4 oszlopból álló mátrix 2. sorának 3. oszlopában álló elemét!

m.1 <- matrix(1:12, nrow=3, ncol=4)
m.1[2,3]
[1] 8

9. példa. Mátrix indexelése.
Változtassuk meg 100-ra egy 3 sorból és 4 oszlopból álló mátrix 2. sorának 3. oszlopában álló elemét!

m.1 <- matrix(1:12, nrow=3, ncol=4)
m.1[2,3]
[1] 8

10. példa. Mátrix indexelése.
Írassuk ki egy 3 sorból és 4 oszlopból álló mátrix 2. és 3. sorának 3. oszlopában álló elemét!

m.1 <- matrix(1:12, nrow=3, ncol=4)
m.1[2:3,3]
[1] 8 9

11. példa. Mátrix indexelése.
Írassuk ki egy 3 sorból és 4 oszlopból álló mátrix 2. és 3. sorának 3. oszlopában álló elemét! Az eredmény maradjon mátrix típusú!

m.1 <- matrix(1:12, nrow=3, ncol=4)
m.1[2:3,3, drop=F]
     [,1]
[1,]    8
[2,]    9

12. példa. Mátrix indexelése.
Írassuk ki egy 3 sorból és 4 oszlopból álló mátrix 2. és 3. sorának 3. és 4. oszlopában álló elemét!

m.1 <- matrix(1:12, nrow=3, ncol=4)
m.1[2:3,3:4]
     [,1] [,2]
[1,]    8   11
[2,]    9   12

13. példa. Mátrix indexelése.
Változtassuk 100-ra egy 3 sorból és 4 oszlopból álló mátrix 2. és 3. sorának 3. és 4. oszlopában álló elemét!

m.1 <- matrix(1:12, nrow=3, ncol=4)
m.1[2:3,3:4] <- 100
m.1
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5  100  100
[3,]    3    6  100  100

14. példa. Faktor indexelése.
Írassuk ki egy 10 elemű faktor 3. elemét!

f.1 <- factor(c("város", "város", "falu", "város", "falu","város", "város",
                "falu", "város", "falu"))
f.1[3]
[1] falu
Levels: falu város

15. példa. Faktor indexelése.
Írassuk ki egy 10 elemű faktor 3. és 7. elemét!

f.1 <- factor(c("város", "város", "falu", "város", "falu","város", "város",
                "falu", "város", "falu"))
f.1[c(3,7)]
[1] falu  város
Levels: falu város

16. példa. Faktor indexelése.
Változtassuk "város"-ra egy 10 elemű faktor 3. elemét!

f.1 <- factor(c("város", "város", "falu", "város", "falu","város", "város",
                "falu", "város", "falu"))
f.1[3] <- "város"
f.1
 [1] város város város város falu  város város falu  város falu 
Levels: falu város

17. példa. Lista indexelése.
Írassunk ki egy 5 elemű lista 3. elemét tartalmazó listát!

lista.1 <- list(1:3, T, -5, c("magyar","német","kémia"), 78)
lista.1
[[1]]
[1] 1 2 3

[[2]]
[1] TRUE

[[3]]
[1] -5

[[4]]
[1] "magyar" "német"  "kémia" 

[[5]]
[1] 78
lista.1[3]
[[1]]
[1] -5

18. példa. Lista indexelése.
Írassunk ki egy 5 elemű lista 3. és 5. elemét tartalmazó listát!

lista.1 <- list(1:3, T, -5, c("magyar","német","kémia"), 78)
lista.1
[[1]]
[1] 1 2 3

[[2]]
[1] TRUE

[[3]]
[1] -5

[[4]]
[1] "magyar" "német"  "kémia" 

[[5]]
[1] 78
lista.1[c(3,5)]
[[1]]
[1] -5

[[2]]
[1] 78

19. példa. Lista indexelése.
Írassunk ki egy 5 elemű lista 3. elemét!

lista.1 <- list(1:3, T, -5, c("magyar","német","kémia"), 78)
lista.1
[[1]]
[1] 1 2 3

[[2]]
[1] TRUE

[[3]]
[1] -5

[[4]]
[1] "magyar" "német"  "kémia" 

[[5]]
[1] 78
lista.1[[3]]
[1] -5

20. példa. Lista indexelése.
Írassunk ki egy 5 elemű lista 3. elemét kétféle módon, feltéve, hogy a listaelemek el vannak nevezve!

lista.1 <- list(helyezes=1:3, teruleti=T, eltolas=-5, 
                tantargy=c("magyar","német","kémia"), pontszam=78)
lista.1
$helyezes
[1] 1 2 3

$teruleti
[1] TRUE

$eltolas
[1] -5

$tantargy
[1] "magyar" "német"  "kémia" 

$pontszam
[1] 78
lista.1[[3]] # 1. módszer
[1] -5
lista.1$eltolas # 2. módszer
[1] -5

21. példa. Adattábla indexelése.
Írassuk ki a MASS csomag survey adattáblájának 3. sorában az 5. oszlopban lévő értéket!

data(survey, package = "MASS") # a `survey` beolvasása
survey[3,5]
[1] L on R
Levels: L on R Neither R on L

22. példa. Adattábla indexelése.
Írassuk ki a MASS csomag survey adattáblájának 3. és 6. sorában sorában az 5. oszlopban lévő értékeket!

data(survey, package = "MASS") # a `survey` beolvasása
survey[c(3,6),5]
[1] L on R L on R
Levels: L on R Neither R on L

22. példa. Adattábla indexelése.
Írassuk ki a MASS csomag survey adattáblájának 3. és 6. sorában sorában az 5. oszlopban lévő értékeket! Az adattábla típus maradjon meg!

data(survey, package = "MASS") # a `survey` beolvasása
survey[c(3,6),5, drop=F]
    Fold
3 L on R
6 L on R

23. példa. Adattábla indexelése.
Írassuk ki a MASS csomag survey adattáblájának 3. és 6. sorában sorában az 5. és 9. oszlopban lévő értékeket!

data(survey, package = "MASS") # a `survey` beolvasása
survey[c(3,6), c(5,9)]
    Fold Smoke
3 L on R Occas
6 L on R Never

24. példa. Adattábla indexelése.
Írassuk ki a MASS csomag survey adattáblájának 3. és 6. sorából az összes adatértéket!

data(survey, package = "MASS") # a `survey` beolvasása
survey[c(3,6), ]
     Sex Wr.Hnd NW.Hnd W.Hnd   Fold Pulse    Clap Exer Smoke Height      M.I    Age
3   Male     18   13.3 Right L on R    87 Neither None Occas     NA     <NA> 16.917
6 Female     18   17.7 Right L on R    64   Right Some Never 172.72 Imperial 21.000

25. példa. Adattábla indexelése.
Írassuk ki a MASS csomag survey adattáblájának első 4 sorát kétféle módszerrel!

data(survey, package = "MASS") # a `survey` beolvasása
survey[1:4, ] # 1. módszer
     Sex Wr.Hnd NW.Hnd W.Hnd   Fold Pulse    Clap Exer Smoke Height      M.I    Age
1 Female   18.5   18.0 Right R on L    92    Left Some Never  173.0   Metric 18.250
2   Male   19.5   20.5  Left R on L   104    Left None Regul  177.8 Imperial 17.583
3   Male   18.0   13.3 Right L on R    87 Neither None Occas     NA     <NA> 16.917
4   Male   18.8   18.9 Right R on L    NA Neither None Never  160.0   Metric 20.333
head(survey, n=4) # 2. módszer
     Sex Wr.Hnd NW.Hnd W.Hnd   Fold Pulse    Clap Exer Smoke Height      M.I    Age
1 Female   18.5   18.0 Right R on L    92    Left Some Never  173.0   Metric 18.250
2   Male   19.5   20.5  Left R on L   104    Left None Regul  177.8 Imperial 17.583
3   Male   18.0   13.3 Right L on R    87 Neither None Occas     NA     <NA> 16.917
4   Male   18.8   18.9 Right R on L    NA Neither None Never  160.0   Metric 20.333

26. példa. Adattábla indexelése.
Írassuk ki a MASS csomag survey adattáblájának Pulse oszlopát háromféle módszerrel!

data(survey, package = "MASS") # a `survey` beolvasása
str(survey)
'data.frame':    237 obs. of  12 variables:
 $ Sex   : Factor w/ 2 levels "Female","Male": 1 2 2 2 2 1 2 1 2 2 ...
 $ Wr.Hnd: num  18.5 19.5 18 18.8 20 18 17.7 17 20 18.5 ...
 $ NW.Hnd: num  18 20.5 13.3 18.9 20 17.7 17.7 17.3 19.5 18.5 ...
 $ W.Hnd : Factor w/ 2 levels "Left","Right": 2 1 2 2 2 2 2 2 2 2 ...
 $ Fold  : Factor w/ 3 levels "L on R","Neither",..: 3 3 1 3 2 1 1 3 3 3 ...
 $ Pulse : int  92 104 87 NA 35 64 83 74 72 90 ...
 $ Clap  : Factor w/ 3 levels "Left","Neither",..: 1 1 2 2 3 3 3 3 3 3 ...
 $ Exer  : Factor w/ 3 levels "Freq","None",..: 3 2 2 2 3 3 1 1 3 3 ...
 $ Smoke : Factor w/ 4 levels "Heavy","Never",..: 2 4 3 2 2 2 2 2 2 2 ...
 $ Height: num  173 178 NA 160 165 ...
 $ M.I   : Factor w/ 2 levels "Imperial","Metric": 2 1 NA 2 2 1 1 2 2 2 ...
 $ Age   : num  18.2 17.6 16.9 20.3 23.7 ...
survey[, 6]       # 1. módszer
  [1]  92 104  87  NA  35  64  83  74  72  90  80  68  NA  66  60  NA  89  74  NA  78  72  72  64
 [24]  62  64  90  90  62  76  79  76  78  72  70  54  66  NA  72  80  NA  NA  72  60  80  70  NA
 [47]  84  96  60  50  55  68  78  56  65  NA  70  72  62  NA  66  72  70  NA  64  NA  NA  64  NA
 [70]  80  64  NA  68  40  88  68  76  NA  68  NA  66  76  98  NA  90  76  70  75  60  92  75  NA
 [93]  70  NA  65  NA  68  60  NA  68  NA  60  NA  72  80  80  NA  85  64  67  76  80  75  60  60
[116]  70  70  83 100 100  80  76  92  59  66  NA  68  66  74  90  86  60  86  80  85  90  73  72
[139]  NA  68  84  NA  65  96  68  75  64  60  92  64  76  80  92  69  68  76  NA  74  NA  84  80
[162]  NA  72  60  NA  81  70  65  NA  72  NA  80  50  48  68 104  76  84  NA  70  68  87  79  70
[185]  90  72  79  65  62  63  92  60  68  72  NA  76  80  71  80  80  61  48  76  86  80  83  76
[208]  84  97  NA  74  83  78  65  68  NA  NA  88  NA  75  NA  70  88  NA  NA  96  80  68  70  71
[231]  80  NA  85  88  NA  90  85
survey[, "Pulse"] # 2. módszer
  [1]  92 104  87  NA  35  64  83  74  72  90  80  68  NA  66  60  NA  89  74  NA  78  72  72  64
 [24]  62  64  90  90  62  76  79  76  78  72  70  54  66  NA  72  80  NA  NA  72  60  80  70  NA
 [47]  84  96  60  50  55  68  78  56  65  NA  70  72  62  NA  66  72  70  NA  64  NA  NA  64  NA
 [70]  80  64  NA  68  40  88  68  76  NA  68  NA  66  76  98  NA  90  76  70  75  60  92  75  NA
 [93]  70  NA  65  NA  68  60  NA  68  NA  60  NA  72  80  80  NA  85  64  67  76  80  75  60  60
[116]  70  70  83 100 100  80  76  92  59  66  NA  68  66  74  90  86  60  86  80  85  90  73  72
[139]  NA  68  84  NA  65  96  68  75  64  60  92  64  76  80  92  69  68  76  NA  74  NA  84  80
[162]  NA  72  60  NA  81  70  65  NA  72  NA  80  50  48  68 104  76  84  NA  70  68  87  79  70
[185]  90  72  79  65  62  63  92  60  68  72  NA  76  80  71  80  80  61  48  76  86  80  83  76
[208]  84  97  NA  74  83  78  65  68  NA  NA  88  NA  75  NA  70  88  NA  NA  96  80  68  70  71
[231]  80  NA  85  88  NA  90  85
survey$Pulse      # 3. módszer
  [1]  92 104  87  NA  35  64  83  74  72  90  80  68  NA  66  60  NA  89  74  NA  78  72  72  64
 [24]  62  64  90  90  62  76  79  76  78  72  70  54  66  NA  72  80  NA  NA  72  60  80  70  NA
 [47]  84  96  60  50  55  68  78  56  65  NA  70  72  62  NA  66  72  70  NA  64  NA  NA  64  NA
 [70]  80  64  NA  68  40  88  68  76  NA  68  NA  66  76  98  NA  90  76  70  75  60  92  75  NA
 [93]  70  NA  65  NA  68  60  NA  68  NA  60  NA  72  80  80  NA  85  64  67  76  80  75  60  60
[116]  70  70  83 100 100  80  76  92  59  66  NA  68  66  74  90  86  60  86  80  85  90  73  72
[139]  NA  68  84  NA  65  96  68  75  64  60  92  64  76  80  92  69  68  76  NA  74  NA  84  80
[162]  NA  72  60  NA  81  70  65  NA  72  NA  80  50  48  68 104  76  84  NA  70  68  87  79  70
[185]  90  72  79  65  62  63  92  60  68  72  NA  76  80  71  80  80  61  48  76  86  80  83  76
[208]  84  97  NA  74  83  78  65  68  NA  NA  88  NA  75  NA  70  88  NA  NA  96  80  68  70  71
[231]  80  NA  85  88  NA  90  85

27. példa. Adattábla indexelése.
Írassuk ki a MASS csomag survey adattáblájának Pulse változójának első 3 elemét háromféle módszerrel!

data(survey, package = "MASS") # a `survey` beolvasása
str(survey)
'data.frame':    237 obs. of  12 variables:
 $ Sex   : Factor w/ 2 levels "Female","Male": 1 2 2 2 2 1 2 1 2 2 ...
 $ Wr.Hnd: num  18.5 19.5 18 18.8 20 18 17.7 17 20 18.5 ...
 $ NW.Hnd: num  18 20.5 13.3 18.9 20 17.7 17.7 17.3 19.5 18.5 ...
 $ W.Hnd : Factor w/ 2 levels "Left","Right": 2 1 2 2 2 2 2 2 2 2 ...
 $ Fold  : Factor w/ 3 levels "L on R","Neither",..: 3 3 1 3 2 1 1 3 3 3 ...
 $ Pulse : int  92 104 87 NA 35 64 83 74 72 90 ...
 $ Clap  : Factor w/ 3 levels "Left","Neither",..: 1 1 2 2 3 3 3 3 3 3 ...
 $ Exer  : Factor w/ 3 levels "Freq","None",..: 3 2 2 2 3 3 1 1 3 3 ...
 $ Smoke : Factor w/ 4 levels "Heavy","Never",..: 2 4 3 2 2 2 2 2 2 2 ...
 $ Height: num  173 178 NA 160 165 ...
 $ M.I   : Factor w/ 2 levels "Imperial","Metric": 2 1 NA 2 2 1 1 2 2 2 ...
 $ Age   : num  18.2 17.6 16.9 20.3 23.7 ...
survey[1:3, 6]       # 1. módszer
[1]  92 104  87
survey[1:3, "Pulse"] # 2. módszer
[1]  92 104  87
survey$Pulse[1:3]    # 3. módszer
[1]  92 104  87