r-projekt.hu R: az ingyenes adatelemző szoftver és statisztikai programozási környezet Fri, 26 Mar 2021 00:15:32 +0000 hu hourly 1 https://wordpress.org/?v=4.8.18 Hol a szkript? /2016/12/23/hol-a-szkript/ /2016/12/23/hol-a-szkript/#comments Fri, 23 Dec 2016 14:39:38 +0000 /?p=547024 Continue reading ]]>
Body:

Habár írtam már pár automatikusan futó R szkriptet, mindig fejtörést okozott a munkakönyvtár beállítása. Hacsak nem eleve a szükséges mappában indult el az Rscript (márpedig a cron a $HOME-ban indítja őket), minden egyes kód a

setwd("kódot/tartalmazó/mappa")

paranccsal kezdődött. Ezzel a kénylemetlenséggel egészen addig együtt tudtam élni, amíg nem kellett megosztani a kódot; ezzel a módszerrel ugyanis amellett, hogy mások gépén nem működik, azt is megmutatja, hogy én hol tartom az adott projekt fájljait, amit nem tartok szerencsésnek.

Az Rscript programnak átadhatunk különböző paramétereket, ezek közül az egyik első a futtatandó szkript elérési útja. Az argumentumokat a commandArgs függvény visszaadja, amik közül ki lehet szedni a futtatott fájl címét – így azt már csak a dirname függvénynek kell odaadni, hogy megkapjam az eredeti kérdésre a választ. Az egészet becsomagoltam egy függvénybe:

Mostmár minden szkript első sora ugyan az:

setwd(get_script_dir())

Via:: Hol a szkript?

]]>
/2016/12/23/hol-a-szkript/feed/ 1219
useR! 2016 @ Stanford elso nap /2016/06/28/user-2016-stanford-elso-nap/ /2016/06/28/user-2016-stanford-elso-nap/#comments Tue, 28 Jun 2016 06:02:42 +0000 /?p=431287 Continue reading ]]> A useR! konferencia az R programozasi nyelvvel kapcsolatos rendezvenyek legfontosabb esemenye, amelyet eves valtasban hol Europaban, hol az Egyesult Allamokban rendznek meg. Iden a Stanford egyetem biztositott helyszint a minden idok eddigi legnagyobb R-es konferenciajanak: a vilag minden tajarol 800 fo regisztralt a 4 napos rendezvenyre — amely szam csak azert nem magasabb, mert mar aprilisban lezarult a regisztracio helyhianyra valo tekintettel.

A konferencia elso napja, szokas szerint, tutorialokkal indult: delelott es delutan is egy-egy 3 oras workshopon vehetett reszt minden latogato. A valasztas nem volt egyszeru: GIS, git, Shiny, data.table, H2O, spark, Rmarkdown es tovabbi mas izgalmas temak kozul vegul Erin LeDell machine learning “deep dive” eloadasara ultem be (a lepcsore — mert mashol mar nem volt hely):

Az eloadas deep learning resze kellemes emlekeket ebresztett bennem a masfel evtizeddel ezelott megjelent Bug Brain jatekrol 🙂

Delutan az “effective shiny programming” workshopot latogattam, de sajnos csak az elso felen tudtam reszt venni, ugyani 3-tol kezdodott az R Consortium negyed evente esedekes “Birds of a feather” megbeszelese, amelyen a satRday projekt egyik szervezojekent orommel vettem reszt tobbek kozott John Chambers (R Foundation), Hadley Wickham (RStudio), Louis Bajuk-Yorgan (TIBCO), Karl Millar (Google), Dinesh Nimal (IBM), elnoksegi tagok, tovabba Csardi Gabor (R-hub), Richie Cotton (R honositas), Nick Carchedi (DataCamp) es a Linux Foundation kepviseloje mellett. A megbeszeles egyik kozponti kerdese volt, hogy tovabbi szervezetek miert erezhetik indokoltnak a konzorciumhoz valo csatlakozast.

Ezt kovetoen az R Consortium nagyobb nyilvanossagot kapott, es Joe Rickert a konferncia legnagyobb eloadojaban arrol szamolt be, hogy a konzortium milyen projekteket tamogatott, ill. milyen tervek varnak megvalositasra a kozeljovoben. Kiemelte, hogy a tamogatando projektek DEADLINE AT TODO. Nagy oromomre szolgalt, hogy a slide-ok kozul egy kifejezetten a satRday projekttel foglalkozott:

satrdays mentioned by Joe

A mai nap vegul a Women in R task force es R-ladies prezentaciokkal zarult, ahol orommel szamoltak be a mar elert sikerekrol (SF: 700, London: 400 fo par honap alatt) es tovabbi tervekrol (NY):

Utana soroztunk, holnap pedig folyt. kov.

]]>
/2016/06/28/user-2016-stanford-elso-nap/feed/ 17109
R és python /2015/08/08/r-es-python/ /2015/08/08/r-es-python/#comments Sat, 08 Aug 2015 20:23:14 +0000 /?p=209847 Continue reading ]]>  

Egy rövid project (twitter sentiment analysis with vaderSentiment method) keretein belül az rPython csomagot használtuk és az ezzel kapcsolatos tapasztalatot szeretnénk most megosztani.

res_tweet

A project során tweet-ket gyűjtöttünk és egy adattáblába szerveztük őket. Ezután a python nyelven megírt VaderSentiment módszerrel elemeztük a tweeteket. A módszer lényege, hogy egy adott szöveget a benne lévő szavak, hangulatjelek és egyéb más rövidítések (pl.: LOL stb.) alapján számít ki 4 értéket (negatív, neutrális, pozitív és összesített).

Egy példa, a kapcsos zárójelben a számított értékek:

“VADER is smart, handsome, and funny.”
{‘neg’: 0.0, ‘neu’: 0.254, ‘pos’: 0.746, ‘compound’: 0.8316}

Értékelés:

A mondatban nem volt negatív töltésű rész. Körülbelül a szöveg ~25%-a semleges, míg a maradék ~75% pozitív kincsengésű volt. Összességében a normalizált “compound” érték 0.83 volt (-1 és 1 között lehet). Ha > 0.05, akkor pozitív, ha itt.

# rPython csomag betöltése
library(rPython)
 
# a tweet-ek behívása
tweet<-as.character(readLines("tweet_data.txt"))
 
# a tweet-ek tisztítása: #,@ jelek törlése a szövegekből.
tweet<-gsub("#","",tweet)
tweet<-gsub("@","",tweet)
tweet<-gsub("\"","",tweet)
tweet<-gsub("\n","",tweet)
 
# a változó átalakítása, hogy a python scriptbe tudjuk ágyazni
# idézőjeleket teszünk a tweet-ek elejére és végére
tweet<-paste("\"",tweet,"\"",sep="")
# vessző hozzáfűzése minden tweet végéhez az idézőjel után, 
# kivéve az utolsó sornál
tweet[1:(length(tweet)-1)]<-paste(tweet[1:(length(tweet)-1)],",",sep="")
 
# python fájl kiírása egy fájlba
# a számított értékeket először a "bs" változóba tároljuk, majd
# a "mylist" listába gyűjtjük össze az összeset és ezt adjuk át az R-nek
fajl<-"tweet_vaderSentiment.py"
cat("from vaderSentiment.vaderSentiment import sentiment as vaderSentiment\n", file =fajl)
cat("sentences = [\n",file=fajl,append=T)
cat(paste(" ",tweet,sep="\n"),file=fajl,append=T)
cat(" \n",file=fajl,append=T)
cat(" ]\n",file=fajl,append=T)
cat("mylist=[]\n",file=fajl,append=T)
cat("for sentence in sentences:\n",file=fajl,append=T)
cat(" bs=vaderSentiment(sentence)\n",file=fajl,append=T)
cat(" mylist.append(bs)\n",file=fajl,append=T)
 
# python kód betöltése és futtatása
python.load("tweet_vaderSentiment.py")
# az eredmények átemelése R-be
res.tweet<-python.get("mylist")
# az adatok adattáblába rendezése
res.tweet<-as.data.frame(do.call(rbind,res.tweet))
 
# az összesített eredmények egyszerű ábrázolása
plot(res.tweet$compound,main="Results of Vader Sentiment analysis",xlab="",ylab="compound values")
abline(h=0.05,col="red")
abline(h=-0.05,col="red")
text(50,-0.7,"negative")
text(50,0.8,"positive")
text(2,0.08,"neutral")

Az R és a python együttes használatával egy nagyon eszköztárat kapunk, amivel gyakorlatilag bármilyen problémát meg tudunk oldani!

Via: R és python

]]>
/2015/08/08/r-es-python/feed/ 1084
useR! 2015 záró gondolatok /2015/07/03/user-2015-zaro-gondolatok/ /2015/07/03/user-2015-zaro-gondolatok/#comments Fri, 03 Jul 2015 11:13:37 +0000 /?p=185834 Continue reading ]]> Az utolsó nap többnyire a szponzoroké volt, de meglepő egészen kellemes szekció volt érdekes, és kevéssé marketingszagú előadásokkal.

Volt szó a Revolution Analytics Microsoft általi felvásárlásáról, a nemrégiben hivatalosan is bejelentett R Consortium megalakulásáról,  de az RStudio újdonságairól (pl. hogy még továbbra sem profitábilis a működésük), a HP distributed R programjáról és hogy a HP alkalmazottak miért nem kapnak ingyenes nyomtatópatront, a H2O agilis csapata élőben demózott, és a plenáris előadások keretében megtudhattuk azt is, hogy a statisztika mennyire egszerű (statisztika professzoroknak). De beszéljenek inkább az alább képek:

IMG_20150703_110359

Összességében egy remek konferencia volt, gyorsan elrepült az idő vasárnap este óta, sok online (GH, SO, Twitter) ismerőssel találkozhattam élőben, és nagy öröm volt látni az nemzetközileg egyre fokozódó érdeklődést az R iránt.

Találkozunk jövőre a Stanfordon, bővebb beszámolóval pedig élőben, a következő R meetupon jelentkezünk 🙂

]]>
/2015/07/03/user-2015-zaro-gondolatok/feed/ 832
useR! 2015 előadások #2 /2015/07/03/user-2015-eloadasok-2/ /2015/07/03/user-2015-eloadasok-2/#comments Fri, 03 Jul 2015 09:11:23 +0000 /?p=185822 Continue reading ]]> A konferencia második napja Di Cook plenáris előadásával indult az interaktív adatvizualizécióról a 800 fős nagyteremben, ahol a nap hátralévő részét is töltöttem. Számomra az egyik legemlékezetesebb előadást A. Jonathan R. Godfrey tartotta az BrailleR csomagról és arról, hogy nem látó felhasználók hogyan tudnak kommunikálni az R környezettel:

IMG_20150702_103643

Majd a hazai R felhasználók számára a tavalyi R meetup és BI konferenciáról is ismerős Matt Dowle és data.table társszerője, Arun Srinivasan tartottak hasonlóan emlékezetes előadásokat:

Ez a délelőtti szekció különösen izgalmas volt, mert még ugyanezen szekcióban Andrie de Vries adott elő a Revolution Analytics/Microsoft képviseletében a CRAN csomagjainak network elemzéséről.

Délután szó volt többek között a googlespreadsheet csomagról, amely Jennifer Bryan gondozásában nagyon egyszerű módon teszi lehetővé Google táblázatok olvasását és szerkesztését R-ből:

Jenny után Oliver Keyes következett a Wikimedia-tól, aki a CRAN csomagjait vizsgálta különbőző szoftverfejlesztésben standardként használt QA metrikák segítségével, amely előadást heves vita követett. Érdekességképpen megemlítem, hogy előadást laptop nélkül tartotta (amely sajnálatos módon elveszett a konferenciára való utazása közben), ill. jelenleg egy általános Google Drive R csomagon dolgozik. Az adatvizualizációs szekciókra sajnos nem jutottam el, de annál nagyobb öröm volt újra hallani Csárdi Gábort a nagyon izgalmas METACRAN projektjéről, amely fejlesztése remélhetőleg a továbbiakban is hasonlóan lendületesen zajlik majd:

Utoljára a Vestas képviselője beszélt arról, hogyan big data problémáik megoldásában hogyan használják az R-t, és még volt lehetőségem bepillantani a grid-guru Paul Murrel előadásába is, ahol egy elég zsúfolt teremben kiderült, hogy a gridGraphics csomag segítségével egyszerűen alakíthatunk base/graphics ábrákat grid formába:

IMG_20150702_170752

Utána kihagytam a hivatalos konferencia-vacsorát, és Tajti Andrással egyetemben alternatív networking lehetőségekkel éltünksöröztünk többek között Matt Dowle és egy H2O fejlesztő társaságában. Holnap a konferencia záró napja!

]]>
/2015/07/03/user-2015-eloadasok-2/feed/ 936
useR! 2015 előadások /2015/07/02/user-2015-eloadasok/ /2015/07/02/user-2015-eloadasok/#comments Thu, 02 Jul 2015 09:54:08 +0000 /?p=185187 Continue reading ]]> A konferencia első hivatalos napja Romain Francois plenáris előadásával indult, aki ismerős lehet minden hazai R felhasználónak a tavalyi BURN előadásáról, ill. a Budapest BI Fórumról:

Az ebéd előtt az ottani előadásom kapcsán a Network szekciót látogattam Csárdi Gáborral egyetemben:

Az ebéd kellemes társaságban (Paul Murrel, Csárdi Gábor, JJ Allaire, Jeroen Ooms) a record/replayPlot függvények érdekességeinek tárgyalásával telt.

A délutáni Kaleidoscope szekcióban közül leginkább Richard M. Heiberger nagyon profin átgondolt és prezentált előadását élveztem:

De volt itt szó többek között a mosógépből kikerülő zoknik párosíthatóságának valószínűségéről természetesen Bayes-i megközelítésben, ill. egy esetleges zombi fertőzés terjedésének tudományos vizsgálatáról. Le a kalappal a hardcore teoretikus témákat szórakoztató módon előadó R felhasználók előtt!

A délutáni plenáris előadás is lehengerlő volt, ilyen élménzben utoljára Tomka Miklós EVS előadásának hallgatása közben volt részem: egy köztiszteletben álló professzor nagyon felkészült, humoros, technikai újdonságokkal megspékelt, tartalmas előadást nagyon emlékezetesen tartott meg. Azt hiszem, hogy minden plenáris előadásnak ilyesminek kellene lennie. Később, a Business szekcióban sajnos csak Stefan Bache előadására jutottam be, akit remélhetőleg Budapesten is köszönthetünk október magasságában:

A konferencia első napja egy igen tartalmas (75+) poszter szekcióval zárult, ahol 3 posztert a magyar látogatók (Salánki Ági, Tajti András és jómagam) mutattak be:IMG_20150701_203109 IMG_20150701_203104 IMG_20150701_195815

]]>
/2015/07/02/user-2015-eloadasok/feed/ 894
useR! 1. nap /2015/07/02/user-1-nap/ /2015/07/02/user-1-nap/#comments Thu, 02 Jul 2015 08:57:42 +0000 /?p=184768 Continue reading ]]> A jelenleg is napfényes Aalborgban zajlik az idei useR! konferencia.

Az első napon délelőtt és délután is négy-négy tutorial közül válogathattak a
résztvevők. Én (a többi magyar résztvevővel együtt) Csárdi Gábor Igraph-bemutatójára ültem be: a legfrissebb (1.0) verzóban már valósággal lubickolni lehet a különböző gráfmanipulálási módszerekben, szintaxisokban: a régiek (egyelőre) megmaradnak, viszont az egész bővült egy make_* függvénycsaláddal, ráadásul a make_ önmagában is megáll függvényként. Amióta utoljára elmélyültem a csomagban, jelentősen fejlődött az ábrázolás, lehet közösségeket is plottolni követlenül, nem kell a csúcsok attribútumait beállítani. Viszont lehet használni meglepően nagy mértékben: a csúcsok (vagy élek) attribútumaként is meg lehet adni a paramétereket (szín, alak, méret, bármi ami létezik). Hozzá lehet nyulni a gráf elemeihez már a “[” es “[[” operátorokkal is. Ami szintén egy nagy újítás számomra, hogy össze lehet hasonlítani a közösségeket a csomagban implementált függvényekkel, és nem kell külső csomagokból importálni a mérőeszközöket.

Délután az assertive és a testthat csomagokba kaptam egy kis bevezetőt: a két részre osztott gyakorlat első fele az előbbi, második az utóbbi csomagról szólt, hasonló felépítésben: a több mint egy órás szakaszok eleján egy bevezetőt mondott Richard J. Cotton, majd egy nagy adag házifeladaton kellett átrágni magunkat. Nem volt szó a testthat csomagnak a frissen elmentett függvényre való futtatásáról, amit Otti Levente mutatott az április BURN meetupon.

Este hétkor a helyi MüPában tartott a polgármester egy rövid beszédet, majd egy állófogadással ért véget a hivatalos program.

Via:: useR! 1. nap

]]>
/2015/07/02/user-1-nap/feed/ 633
ShinyR bevezetés /2015/07/01/shinyr-bevezetes/ Wed, 01 Jul 2015 18:16:57 +0000 /?p=200814 Continue reading ]]> A Shiny egy az R-hez kifejlesztett keretrendszer, amellyel egyszerűen keszíthetünk dinamikus weboldalakat. További, és részletes leírás az Shiny R oldalán.

Kezdjünk egy egyszerű példával 🙂
Bővebb részletesebb leírás hamarosan 🙂

Minimum két fájl szükséges a Shiny használatához:

  • ui.R – user-interface: ez fogja a böngészőben megjeleníteni, amit szeretnénk
  • server.R – server-interface: ez végzi a szerver oldali számításokat, ami dinamikusan változik és az ui.R megjeleníti az eredményt.

A fentebbi példához tartozó R scriptek.

##### server.R #####

# shiny és a csomagok betöltése
# datasets (ehhez a példához innen veszük az adatokat)
library(shiny)
library(datasets)
 
# a "shinyServer" definiálása, amihez meg kell adni az in-, és output elemeket
# output elemként egy barplot-ot fogunk megadni
shinyServer(function(input, output) {
 
  # elkészítjük az ábrát, barplot-ot 
  # majd a renderPlot funkcióval átadjuk az output-nak
  output$phonePlot <- renderPlot({
 
    # Barplot készítése
    barplot(WorldPhones[,input$region]*1000,
            main=input$region,
            ylab="Telefonok száma",
            xlab="Év")
  })
})

##### ui.r #####

library(shiny)
library(datasets)
 
# Létrehozzuk az UI-it (User Interface).
shinyUI(
  fluidPage(
    # itt megadjuk az oldal címét
    titlePanel("Telefonok megoszlása"),
    # Oldalbár készítése
    sidebarLayout(
      # ebben az esetben az odalbárba 1 input elemet adunk meg
      sidebarPanel(
        selectInput("region", "Régió:",
                    # itt adjuk meg, hogy mik közül lehessen választani
                    choices=colnames(WorldPhones)),
        helpText("Data from AT&T (1961) The World's Telephones.")
      ),
 
      # elkészítjük a "mainPanel"-re az ábrát
      mainPanel(
        plotOutput("phonePlot")
      )
    )
  )
)

Via bior.hu

]]>
Adatok importálása /2015/07/01/adatok-importalasa/ Wed, 01 Jul 2015 18:08:59 +0000 /?p=200777 Adatainkat sokféleképpen importálhatjuk, ezek közül mutatunk néhányat példát:

# ha csv (comma separeted values) formátumba vannak az adatok
# a header=TRUE csak akkor szükséges, ha fejléc is van
df<-read.csv("sample.csv", header=TRUE)
 
# ha egy sima txt-ben vannak az adatok és tabulator a szeparatorunk ("\t")
df<−read.table("sample.txt",header=TRUE,sep="\t")
 
# ha xlsx-ben tároljuk az adatokat, akkor egy lehetséges megoldás, hogy
# először behívjuk az XLConnect csomagot
# betöltjük az xlsx fájlt, majd végül az adott munkalapot
library(XLConnect)
wb<-loadWorkbook("sample.xlsx", create = FALSE)
df<-readWorksheet(wb, sheet = "Sheet1")
 
# ha json (JavaScript Object Notation) formátumba vannak rendezve az adatok:
library(rjson)
df<-fromJSON(file="sample.json")
 
# ha mysql adatbázisban vannak az adataink
# akkor a RMySQL lehet a segítségünkre
library(RMySQL)
mydb<-dbConnect(MySQL(),user="root",password="pass",dbname="sampleDB",host="localhost")
df<-dbReadTable(mydb, "adattabla_neve")

Felhasznált adatok:

Természetesen ezek mellett még számos más lehetőség is van  🙂

Via bior.hu

]]>
useR! 2015 workshop nap /2015/06/30/user-2015-workshop-nap/ /2015/06/30/user-2015-workshop-nap/#comments Tue, 30 Jun 2015 21:45:22 +0000 /?p=184659 Continue reading ]]> A konferencia szokás szerint fél napos tutorialokkal indult, ahol a résztvevől 2×8 gyakorlatias workshop közül választhattak — térítésmentesen a szervezők jóvoltából. A délelőtt folyamán Csárdi Gábor igraph előadását látogattam, és nagyon nem bántam meg a döntésem, nagyon hasznos időtöltés volt:

Később a konferencia magyar résztvevői közösen indultak el felderíteni Aalborg sörkínálatatát a konferencia helszínétől északra:

IMG_20150630_171541

Majd az esti fogadáson találkozhattunk többek között az OpenCPU és a data.table fő fejlesztőivel:

IMG_20150630_211422A konferencia hivatalosan holnap kezdődik, számos izgalmasnak ígérkező előadással.

 

]]>
/2015/06/30/user-2015-workshop-nap/feed/ 812