2013. január 15., kedd

R. Öt első benyomás.

1. Elkezdtem tanulni az R nyelvet. Az R ingyenes, nyílt forráskódú, magasszintű nyelv -- az első benyomásaim nagyon jók, az R alapvetően könnyű. Azt azonban meg kell jegyezni, hogy első nyelvnek semmiképp sem ajánlható, mivel szinte minden oktató anyag feltételezi az alapszintű informatikai fogalmak ismeretét. Szintén nem kimondott előfeltételezés, hogy friss R-es tisztában van néhány egyszerűbb matematikai és statisztikai koncepcióval. Harmadrészt pedig elég unalmas lehet úgy dolgozni az R-rel, ha nincs egy valódi és konkrét problémánk, amit meg szeretnénk oldani.

2. Az R kellemesen fapados, ami meghatározza a munka menetét is. Mindenképp szükség van bemenő adatokra és előre feltett kérdésekre. Bemenő adatonként én táblákat (csv) és nyers, formázatlan számsorokat használok, ezekkel az R nagyon jól boldogul. Miután beolvastuk az adatokat, az interaktív konzolon dolgozhatunk rajtuk, ez gyakorlatilag ugyanolyan, mint a python nyelvben: beírunk egy parancsot, és egyből megkapjuk a választ. Ez azért jó, mert egyből látjuk a végeredményt, és azért rossz, mert jól kell megfogalmazni (parancsként) a kérdéseinkent -- máskülönben sokat kell gépelnünk. Az interaktív konzol további jó tulajdonsága, hogy alapértelmezésként elmenti a teljes worspace-t:  a teljes parancs-history-t és a memória teljes tartalmát(!) is. Vagyis, a korábbi munkánkat bármikor folytathatjuk.

3. Én eddig csak az R Cookbook-ot és néhány online leírást böngésztem át; úgy tűnik, hogy az R munkastílus alapvetően nem programokban gondolkodik. Lehet természetesen különféle vezérlő-szerkezeteket, ciklusokat és elágazásokat, függvényeket és osztályokat készíteni. Ennél azonban népszerűbb a rengeteg beépített (és letölthető) függvény használata, valamint az 'adatokban gondolkodás'. Számomra ez körülbelül azt jelenti, hogy ahelyett, hogy azt terveznénk meg, mit csináljon a számítógép az adatokkal, azt gondoljuk ki, mi történjen az adatokkal. Vagyis, miként változzanak meg -- aminek a legjobb módja, hogy felállítunk pár szabályt (függvényt), amin azután áteresztjük az adatainkat. Nem kivételekben és döntésekben gondolkodunk, hanem transzformációkban és szűrésekben. Egy kicsit nehéz elfelejteni az ciklusokat és az if-eket, ha az ember egy klasszikus programnyelv felől érkezik -- cserébe viszont átlátható, tömör kód és kevés hibalehetőség a jutalmunk.

4. És végül demonstrálja néhány példa, hogy milyen kellemes az R-rel való munka:


Egy mozdulattal beolvasunk egy táblát. Ezután h[x,y] formában férhetünk hozzá az adatokhoz.
 
h <- read.csv('meki_hir.csv')

Egy mátrix nem üres elemeit mind átírjuk 1-re. Először definiálunk egy függvényt, a következő sorban pedig alkalmazzuk egy mátrixra.
 
not_zero <- function(x) { if (x==0) return(0) else return(1)}
dtm0 <- apply(dtmM, 1:2, not_zero

Oszloponként összeadjuk egy mátrix elemeit:

TF = colSums(as.matrix(dtm0))

Mátrixszorzás. Az R alapszerkezetei a vektor és a mátrix, bármilyen műveletet végezhetünk elemenként és teljes mátrixon értelmezve is.

scores <- dtmM %*% ITF_DIAG

Kiválasztjuk egy mátrix első sorának 30 legnagyobb elemét:

sort(scores[1,], decreasing = TRUE)[1:30]
 

5. Az adatok mit sem érnek, ha nem tudjuk őket megnézni. Az R grafikai képességei nagyszerűek, használatuk gyerekjáték. Itt egy nagy adathalmaz 3 véletlenszerűen kiválasztott elemére nézünk rá, hogy lássuk, milyen az eloszlásuk.

 
par(mfrow=c(1,3))
plot(egy_alatt_(7,0.05)$freq)
grid()
plot(egy_alatt_(47,0.05)$freq)
grid()
plot(egy_alatt_(67,0.05)$freq)
grid()
savePlot("kutyiDist.png", type="png")




 

Nincsenek megjegyzések:

Megjegyzés küldése