Az R nyelv. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar június 12.

Hasonló dokumentumok
Az R programozási nyelv (tárgyalt R verzió: ) Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

Komputeralgebra rendszerek

Komputeralgebra Rendszerek

Komputeralgebra rendszerek

Lekérdezések az SQL SELECT utasítással

Java II. I A Java programozási nyelv alapelemei

A C programozási nyelv I. Bevezetés

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

A C programozási nyelv I. Bevezetés

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Programozás módszertan

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Készítette: Nagy Tibor István

Java II. I A Java programozási nyelv alapelemei

Osztályok. 4. gyakorlat

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Lekérdezések az SQL SELECT utasítással. Copyright 2004, Oracle. All rights reserved.

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

A C programozási nyelv III. Pointerek és tömbök.

Készítette: Nagy Tibor István

A C programozási nyelv III. Pointerek és tömbök.

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Programozási nyelvek II. JAVA

Lekérdezések az SQL-ben 1.rész

Lekérdezések az SQL-ben 1.rész

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

A számok kiíratásának formátuma

Adatszerkezetek I. 1. előadás

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

Rekurzió. Dr. Iványi Péter

SZÁMÍTÁSOK A TÁBLÁZATBAN

C programozási nyelv Pointerek, tömbök, pointer aritmetika

BASH script programozás II. Vezérlési szerkezetek

Occam 1. Készítette: Szabó Éva

Adatok importálása R-ben

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

1. fejezet Microsoft Excel 2010 Tartománynevek... 3

Programozási nyelvek (ADA)

1. Alapok. #!/bin/bash

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Programozás alapjai. 7. előadás

LEGO robotok. XII. rész

Szkriptnyelvek. 1. UNIX shell

Listák, szótárak, fájlok Listák, szótárak, fájlok

5.3. Logika a relációkhoz

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

Szövegek C++ -ban, a string osztály

Programok értelmezése

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Struktúra nélküli adatszerkezetek

Programozási nyelvek II.: JAVA, 4. gyakorlat

Többtáblás lekérdezések megjelenítése

Mutatók és mutató-aritmetika C-ben március 19.

Programozás alapjai. 5. előadás

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

MATLAB alapismeretek I.

A programozás alapjai

Programozás I gyakorlat

Alkalmazott modul: Programozás

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Kifejezések. Kozsik Tamás. December 11, 2016

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Programozási nyelvek Java

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Amortizációs költségelemzés

Hálózatok építése és üzemeltetése

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Választó lekérdezés létrehozása

Több tábla összekapcsolásán alapuló lekérdezések

OOP. Alapelvek Elek Tibor

Apple Swift kurzus 3. gyakorlat

2 Access 2016 zsebkönyv

C++ programozási nyelv Konstruktorok-destruktorok

1. Egyszerű (primitív) típusok. 2. Referencia típusok

FUNKCIONÁLIS PROGRAMOZÁS

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

XML sémanyelvek Jeszenszky, Péter

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

A félév során előkerülő témakörök

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Több tábla összekapcsolásán alapuló lekérdezések. Copyright 2004, Oracle. All rights reserved.

Access alapok. Megnevezés Művelet Minta. Új adatbázis létrehozása. Új / Üres adatbázis.. Tábla létrehozása tervező nézetben.

AWK programozás, minták, vezérlési szerkezetek

22. GRÁFOK ÁBRÁZOLÁSA

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

XPath 1.0. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar Utolsó módosítás: szeptember 5.

AWK programozás Bevezetés

A szemantikus elemzés elmélete. Szemantikus elemzés (attribútum fordítási grammatikák) A szemantikus elemzés elmélete. A szemantikus elemzés elmélete

az Excel for Windows programban

Átírás:

Az R nyelv Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu 2019. június 12.

Általános tudnivalók Az R kisbetű-nagybetű érzékeny. 2

Objektumok Az R által kezelt különböző memóriában tárolt adatszerkezeteket objektumoknak nevezzük. Fajtái közé tartoznak például a vektorok, listák, kifejezés objektumok, környezetek, Az str(x) függvényhívás az argumentumként adott objektum belső felépítését jeleníti meg tömör formában. 3

Objektumok típusa, konverziók A typeof(x) függvény visszaadja az argumentumként adott objektum típusát. A visszatérési érték egy karakterlánc, mint például "character". A típusok között elég szabad átjárás van. Kifejezések kiértékelése során automatikus típuskonverziók történnek. Típuskonverziók kényszerítésére számos konverziós függvény áll rendelkezésre. as.logical(x), as.integer(x), as.character(x), 4

NULL objektum Egyetlen NULL objektum létezik, melyet a NULL speciális konstans reprezentál. Általa jelezhető egy objektum hiánya (például az, hogy egy kifejezés vagy függvény értéke nem definiált). Nincs típusa. Az is.null(x) függvény visszaadja, hogy az argumentuma a NULL objektum-e. Kizárólag ezt használjuk a NULL objektummal való összehasonlításhoz vagy az identical(x,null) kifejezést. 5

Az objektumok attribútumai (1) A NULL objektum kivételével minden objektumnak lehetnek attribútumai. Az attribútumok az objektumokhoz tartozó név-érték párok. Egy objektum attribútumainak halmazként kezelése. Egy objektum legfeljebb egy adott nevű attribútummal rendelkezhet. Az attribútumok neve tetszőleges karakterlánc, értéke tetszőleges objektum lehet. Azonban vannak olyan attribútumok, melyeknek speciális jelentése van, ezek értékeire előírások vonatkozhatnak. 6

Az objektumok attribútumai (2) Az attributes(x) függvénnyel lehet lekérdezni az argumentumként adott objektum attribútumait. A visszatérési érték az attribútumok listája. Az attributes(x) <- érték kifejezés beállítja az argumentumként adott objektum attribútumait. érték az attribútumokat felsoroló lista, melynek minden elemét névvel kötelező megadni. Az attributes(x) <- NULL kifejezés az adott objektum összes attribútumát törli. 7

Az objektumok attribútumai (3) Az attr(x,név) függvénnyel lehet lekérdezni egy adott nevű attribútum értékét. A második argumentum az attribútum nevét megadó karakterlánc. Az attribútum nevével teljes vagy egyértelmű prefix egyezés szükséges. Teljes vagy egyértelmű prefix egyezés hiányában NULL a visszaadott érték. Az attr(x,név) <- érték kifejezés állítja be az adott nevű attribútum értékét. 8

Az objektumok attribútumai (4) Vannak speciális attribútumok értékének lekérdezésére és beállítására szolgáló függvények. Speciális attribútumok például a names, dim, dimnames, class. 9

A names attribútum (1) Lehetővé teszi vektorok, listák elemeinek elnevezését. Objektumok kiírásánál fejlécként megjelenik az elemek neve is. Indexelésnél lehet a neveket indexként használni (indexelés karakterláncokkal). Értéke egy megfelelő elemszámú karakter vektor. 10

A names attribútum (2) A names(x) függvény használható az attribútum értékének lekérdezésére. A names(x) <- érték kifejezés beállítja az attribútum értékét. érték karakter vektorrá konvertálása. Ha a karakter vektorrá konvertált érték rövidebb x-nél, kiegészítése NA értékekkel (hosszabb azonban nem lehet). Üres karakterlánc ("") a vektorban azt jelzi, hogy a megfelelő elemnek nincs neve. Ezt indexként megadva azonban egyetlen elem sem lesz kiválasztva. érték lehet speciálisan NULL, mely az attribútum törlését jelenti. 11

Objektumok hossza A length(x) függvény szolgáltatja vektorok, listák, faktorok és egyéb objektumok hosszát. Vektorok, listák, faktorok esetében ez az elemek számát jelenti. A length(x) <- érték kifejezés, ahol érték egyelemű egész vektor, beállítja az adott vektor vagy objektum hosszát. Vektor vagy lista hosszának csökkentése csonkolást eredményez. Vektor vagy lista hosszának növelése NA értékekkel kiegészítést eredményez az adott hosszra. Karakterláncok karaktereinek számának meghatározására szolgál az nchar(x) függvény. 12

Vektorok A legalapvetőbb fajta objektumok a vektorok. A tárban folytonosan elhelyezkedő elemekből állnak, melyekhez indexeléssel lehet hozzáférni. Nincsenek a vektoroknál egyszerűbb objektumok, a konstansok egyelemű vektorokat ábrázolnak. 13

A konstansok öt fajtája Logikai konstansok: TRUE, FALSE Numerikus konstansok: 1,.5, 3.141593, 10e-7,... Előjel nélküliek és 64-bites valós számokat ábrázolnak. Egész konstansok: 1L, 1234L, 1e4L, 0xffffL, Előjel nélküliek 32-bites egész számokat ábrázolnak. Komplex konstansok: 0i, 1.5i, 1e-7i, Nincs valós rész, csak képzetes, valós és képzetes részből álló komplex számok létrehozása operátorokkal történhet. Karakterlánc konstansok: "Hello, world!\n", 'Hello, world!\n' 14

Speciális konstansok: NULL A NULL objektum jelzésére szolgáló speciális konstans. 15

Speciális konstansok: NA Hiányzó értéket jelölő speciális konstans. Alapértelmezésben logikai típusú konstans (egyelemű logikai vektor), melyet azonban tetszőleges típusúvá lehet konvertálni, így tetszőleges típusú vektorban jelölhet hiányzó elemet. Kivételt képeznek a bináris vektorok, melyekhez nincs NA érték. NA értékeken végzett műveletek eredménye általában NA. Kivéve akkor, ha a művelet eredménye az NA értékektől függetlenül meghatározható. Az is.na(x) függvény szolgál NA érték tesztelésre. Kizárólag ezt használjuk erre a célra, mivel például az NA==NA kifejezés értéke is NA! 16

Speciális konstansok: Inf A végtelent jelölő speciális numerikus konstans. Inf és -Inf minden matematikai műveletnél és függvénynél megjelenhet operandusként, paraméterként és eredményként is. Például Inf az értéke az 1/0 aritmetikai kifejezésnek, a -1/0 kifejezésnek pedig -Inf. 17

Speciális konstansok: NaN Speciális numerikus konstans, mely azt jelenti, hogy egy művelet nem értelmezett. Ez az értéke például a 0/0 vagy az Inf-Inf aritmetikai kifejezésnek. Minden matematikai operátornál, függvénynél megjelenhet operandusként, paraméterként és eredményként is. Az is.nan(x) függvény szolgál NaN érték tesztelésre. Kizárólag ezt használjuk erre a célra vagy az identical(x,nan) kifejezést, mivel például a NaN==NaN kifejezés értéke NA! 18

Atomi vektorok (1) Atomi vektoroknak nevezzük az azonos típusú elemekből álló vektorokat, melyeknek az alábbi 6 fajtájuk van: Logikai ("logical") Egész ("integer") Valós ("double") Komplex ("complex") Karakter ("character") Bináris ("raw") Zárójelben a typeof() függvény által adott típus. Az egész és valós vektorokat közös néven numerikus vektoroknak hívjuk. 19

Atomi vektorok (2) Atomi vektorokat a c() függvénnyel lehet létrehozni. Közös típusra konvertálja és egyetlen vektorrá fűzi össze az argumentumokat. Példa: c("x", "Y", "Z") # "X" "Y" "Z" c(c(1, 2), 3, c(4, 5)) # 1 2 3 4 5 c(0i, TRUE, 2) # 0+0i 1+0i 2+0i c(6, "Days", 7, "Nights") # "6" "Days" "7" "Nights" 20

Vektor-aritmetika (1) Vektorok bárhol előfordulhatnak aritmetikai kifejezésekben, ekkor a műveletek elemenként lesznek végrehajtva. Van néhány speciális művelet, mely kivételt jelent, például %*% vektorok esetén a belső szorzatot adja (az eredmény egy egy sorból és oszlopból álló mátrix). Az aritmetikai függvények vektorokra alkalmazása is elemenkénti alkalmazást jelent. Nagyon komplex kifejezéseket nagyon tömören le lehet írni ilyen módon. 21

Vektor-aritmetika (2) Kifejezésekben szereplő vektorok normalizálása közös hosszra. Ez a rövidebb vektor elemeinek ismétlését jelenti: addig ismétlődnek az elemek, amíg el nem érjük a hosszabb vektor hosszát. Ha a rövidebb vektor elemeinek száma nem osztja a hosszabb vektor elemeinek a számát, akkor is elvégzésre kerül a művelet, de figyelmeztetést kapunk. Egy speciális eset az, ha a rövidebb vektor üres vektor, ekkor az eredmény is üres vektor. 22

Vektor-aritmetika (3) Példa: c(1, 2, 3, 4) * c(2, 3, 4, 5) # 2 6 12 20 c(5, 6, 7, 8) * 2 # 10 12 14 16 2^(0:7) # 1 2 4 8 16 32 64 128 cos(c(-pi, 0, pi)) # -1 1-1 sin(seq(from = 0, to = pi / 2, length = 100)) exp(-1) / factorial(0:5) c(1, 2, 3) %*% c(1, 2, 3) # 14 23

Vektorok indexelése [] operátorral (1) Az x vektor indexelése történhet x[i] módon, ahol az i index egész, valós, logikai vagy karakter típusú lehet. Az első elem kiválasztásához az 1 indexet kell megadni. Valós indexek egésszé konvertálása. Az indexelés nem csak az elemek értékének kinyerésére, hanem az elemek helyettesítésére is használható. 24

Vektorok indexelése [] operátorral (2) Az index tetszőleges elemszámú vektor lehet, így akár több elemet is ki lehet választani. Az indexet akár el is lehet hagyni, ami az összes elem kiválasztását jelenti. Az indexhatár-túllépés megengedett, megfelelően kezelt. 25

Vektorok indexelése [] operátorral (3) Ha az index pozitív egészekből álló vektor, akkor a megfelelő elemek kiválasztása történik az adott sorrendben. A vektor hosszánál nagyobb index NA értéket eredményez. Ha az index negatív egészekből álló vektor, akkor azokat az elemeket adja meg, melyek nem lesznek kiválasztva, az összes többi igen. A vektor hosszánál nagyobb abszolút értékű index esetén hiba. Hiba, ha az index vektorban pozitív és negatív értékek is vannak. 26

Vektorok indexelése [] operátorral Példa: (4) # az első 10 elem kiválasztása: x[1:10] # az első, az ötödik, majd ismét az első elem kiválasztása: x[c(1, 5, 1)] # minden páros indexű elem kiválasztása: x[(1:(length(x) / 2)) * 2] # az összes elem kiválasztása minden 5. elhagyásával: x[-((1:(length(x) / 5)) * 5)] 27

Vektorok indexelése [] operátorral (5) Ha az index a vektorral azonos elemszámú logikai vektor, akkor a TRUE értékű elemekkel megegyező indexű elemek kiválasztása. Ha az index a vektornál rövidebb logikai vektor, akkor az index vektor elemeinek ismétlése. Ha az index a vektornál hosszabb logikai vektor, akkor az indexelt vektor kiegészítése NA értékekkel. Példa: # a negatív elemek kiválasztása: x[x < 0] # ugyancsak a páros indexű elemeket választja ki: x[c(false, TRUE)] 28

Vektorok indexelése [] operátorral (6) Ha az index karakter vektor, akkor a names attribútum alapján történik az elemek kiválasztása. Teljes névegyezés kell egy elem kiválasztáshoz. Ha több elem esetén is teljes névegyezés van, a sorrendben első kiválasztása. Ha elemek kinyerésnél nincs teljes egyezés egyetlen elem nevével sem, akkor az eredmény NA. Elemek kinyerésekor az indexben megjelenő üres karakterlánc ("") és a karakter típusú NA érték egyetlen elemet sem választanak ki. 29

Vektorok indexelése [] operátorral Példa: (7) area <- c(9596961, 357386, 93030, 377973) names(area) <- c("china", "Germany", "Hungary", "Japan") area["hungary"] # 93030 area[c("hungary", "Germany")] # 93030 357386 area["spain"] # NA 30

Listák (1) Olyan vektorok, melyek elemei tetszőleges objektumok lehetnek. Az atomi vektoroktól eltérően az elemek különböző típusúak lehetnek. A listák rekurzív jellegű objektumok, az elemeik lehetnek további listák. Az elemekhez történő hozzáférés indexeléssel történik, a vektorokhoz hasonlóan. 31

Listák (2) Listákat a list() függvénnyel lehet létrehozni. Tetszőleges számú argumentumot kaphat a függvény, melyek az elemeket adják meg. Az elemeket meg lehet adni név=érték módon is, ahol név azonosító vagy karakterlánc. A függvényt argumentum nélkül meghívva az eredmény egy üres lista. Listákat a c() függvénnyel lehet összefűzni. Az argumentumok között egyaránt szerepelhetnek atomi vektorok és listák, ezek valamennyi eleme egy-egy komponense lesz az eredmény listának. 32

Listák indexelés (1) A vektorok indexelésénél elmondottak vonatkoznak a listákra is. Azonban használható indexelésre a $ operátor is. Az index operátorok révén törölhetők is elemek a listákból. Ha értékadásban az elemek helyettesítésére használjuk az indexelést, akkor a NULL érték megadásával lehet törölni a lista megfelelő elemeit. 33

Listák indexelése (2) Listákat indexelni lehet x$név módon is. A kifejezésben név azonosító vagy karakterlánc lehet. Ilyenkor a megfelelő nevű elem kiválasztása történik. Elemek értékének kinyerésénél nem szükséges teljes egyezés. Ha nincs teljes egyezés egyetlen elem nevével sem, akkor elég prefix egyezés, amennyiben az egyértelmű. Teljes egyezés hiányában nem egyértelmű prefix egyezés esetén az eredmény NULL. Elemek kinyerésekor tehát az indexben az elemek nevét rövidíteni lehet, ha a rövidítés egyértelmű. 34

Listák indexelése (3) Az [] operátor használata esetén az eredmény mindig lista. A megfelelő elemekből álló részlista. Akkor is, ha az index egyelemű vektor (ilyenkor az eredmény egyelemű lista). A lista egyetlen elemét választják ki a [[]] és $ operátorok. 35

Példa lista használatára (1) x <- list(latitude = 47.49835, longitude = 19.04045) x$lat # 47.49835 x$long # 19.04045 y <- list("debrecen", coordinates = x) y[[1]] <- "Budapest" y[["coordinates"]]$lat # 47.49835 y$coordinates$long # 19.04045 names(y) # "" "coordinates" names(y)[1] <- "city" y$city # "Budapest" 36

Példa lista használatára (2) z <- list( name = list(first.name = "John", last.name = "Cleese"), birth = as.date("1939-10-27"), is.married = TRUE, children = 2, occupation = c("actor", "comedian", "writer") ) z$name z$name$first.name # "John" z$name$last # "Cleese" z[c("name", "birth")] 37

Faktorok (1) A faktorok olyan speciális vektor jellegű objektumok, melyek velük azonos hosszú vektorok elemeinek egy osztályozását határozzák meg. A fakort alkotó véges számú különböző érték reprezentálja az osztályokat vagy kategóriákat. 38

Faktorok (2) Faktorokat a factor(x) függvénnyel lehet létrehozni tetszőleges típusú vektorokból. Az x argumentum egy olyan vektor, mely általában kevés számú különböző értéket tartalmaz, a különböző értékek reprezentálják az egyes kategóriákat. További információk:?factor 39

Példa faktorok használatára area <- c(9596961, 357386, 93030, 377973) names(area) <- c("china", "Germany", "Hungary", "Japan") region <- c("asia", "Europe", "Europe", "Asia") regionf <- factor(region) nlevels(regionf) # 2 levels(regionf) # "Asia" "Europe" tapply(area, regionf, max) # az area vektor maximuma régiónként drivingside <- c("right", "right", "right", "left") drivingsidef <- factor(drivingside) nlevels(drivingsidef) # 2 levels(drivingsidef) # "left" "right" table(regionf, drivingsidef) # kontingenciatáblázat 40

Adatkeretek Olyan speciális listák, melyek komponensei azonos hosszúak. A komponensek vektorok, listák (más adatkeret objektumok is), faktorok és mátrixok lehetnek. Mátrixok esetében hossz alatt a sorok számát kell érteni). Olyan mátrix-szerű struktúrákként tekinthetünk rájuk, melyekben az oszlopok különböző típusúak lehetnek, és amelyekben az oszlopokat a lista komponensei adják meg. A sorok megfigyelések, az oszlopok pedig változók. 41

Adatkeretek létrehozása A data.frame() függvénnyel lehet létrehozni adatkeret objektumokat. Alkalmas objektumokat (például mátrixokat és listákat) az as.data.frame() függvénnyel lehet adatkeret objektumokká konvertálni. Számos olyan függvény van, melyekkel külső forrásból lehet adatkereteket létrehozni. 42

Adatkeretek megjelenítése és szerkesztése Adatkeretek megjelenítésére szolgál a View() függvény. További információk:?view Adatkeretek szerkesztésére szolgál a data.entry() függvény. Ezt hívja meg az edit() függvény is, ha egy adatkeretet kap argumentumként. További információk:?data.entry 43

A data.frame() függvény (1) A függvénynek tetszőleges sok argumentumot meg lehet adni, ezekből a komponensekből képződnek az adatkeret oszlopai. Ha egy argumentumot név=érték módon adunk meg, ahol név egy azonosító vagy karakterlánc, akkor a rendszer ezt használja a megfelelő oszlop(ok) elnevezéséhez. Egyébként az argumentum alapján automatikusan kerül(nek) meghatározásra az oszlopnév (oszlopnevek). 44

A data.frame() függvény (2) Az oszlopokat szolgáltató argumentumok azonos hosszúak kell, hogy legyenek. Kivételt képeznek az atomi vektorok, faktorok és az I(x) függvénnyel levédett karakter vektorok (utóbbit lásd a következő oldalon). Szükség esetén ezek azonos hosszra normalizálása az elemek ismétlésével. 45

A data.frame() függvény (3) A függvénynek átadott karakter vektorok automatikusan faktorokká lesznek konvertálva. Ezt úgy lehet megakadályozni, hogy a vektort az I(x) függvénnyel levédve adjuk át a data.frame() függvénynek. Ha mátrixokat, listákat vagy adatkereteket adunk át argumentumokként, akkor ezek oszlopai illetve komponensei egyenként adódnak hozzá a létrehozandó adatkerethez. Ezt meg lehet akadályozni úgy, hogy az I(x) függvényt használjuk az argumentum levédésére. 46

Példa adatkeret létrehozására countries <- data.frame( name = c("hungary", "Kenya", "Japan"), area = c(93030, 580367, 377873), oecd.member = c(true, FALSE, TRUE), population = c(9797561, 49364325, 126440000), capital = I(c("Budapest", "Nairobi", "Tokyo")), row.names = "name" ) 47

Adatkeretek indexelése (1) Az indexelés hasonlóan történik a mátrixok és listák indexeléséhez. A [], [[]] és $ operátorokat lehet használni. Indexelés nem csupán elemek értékének kinyerésére használható, hanem értékadásban is az adatkeret elemeinek helyettesítésére. A viselkedés esetenként eltérő lehet elemek kinyerése és értékadás esetében! 48

Adatkeretek indexelése (2) A $ operátorral valamint a [] és [[]] operátoroknál egyetlen indexet megadva listaként lehet indexelni az adatkereteket. Így oszlopokat lehet kiválasztani. A [] és [[]] operátoroknál két indexet (sor, oszlop) megadva úgy indexelhetjük az adatkereteket, mint a mátrixokat. A [[]] operátorral csak egyetlen elemet lehet kiválasztani, a [] operátorral egyidejűleg többet is. 49

Példa adatkeret indexelésére (1) countries[[1]] # az 1. oszlop, mint vektor countries[["area"]] # ua. countries$area # ua. countries[1] countries["area"] # az 1. oszlopból álló adatkeret # ua. countries[2:3] # a 2. és 3. oszlopból álló adatkeret countries[c("oecd.member", "population")] # ua. 50

Példa adatkeret indexelésére (2) countries[[1, 2]] # az 1. oszlop 2. oszlopértéke countries[["hungary", "oecd.member"]] # ua. countries[1, 2] # ua. countries["hungary", "oecd.member"] # ua. countries[1,] # az 1. sorból álló adatkeret countries["hungary",] # ua. countries[,2] # a 2. oszlopból álló adatkeret countries[, "oecd.member"] # ua. countries[1:2, 3:4] # az 1-2. sor és a 3-4. oszlop által # meghatározott adatkeret countries[1:2, 4:3] # ua., de az oszlopok felcserélésével 51