Програмски језик Р и његова примена у науци о подацима (2. део)

Аутор: Надица Миљковић

Први кораци …

Програмски језик Р и РСтудио тј. ИДЕ (енг. Integrated Development Environment) за Р нису аутистична окружења, тј. у Р-у је релативно комплексно програмирати без приступа Интернету. Колико год да је help обиман, детаљан и јасно написан, Интернет располаже великим бројем туторијала, питања, одговора на питања, форума, курсева, отворених књига и других мултимедијалних материјала да је без њега знатно теже и искусним програмерима, а камоли почетницима. Р је модуларан тј. ако су Вам потребне специфичне функције, онда Вам је потребан и специфичан пакет који је потребно преузети са Интернета. Иако је вероватно најгора ноћна мора свакога ко држи или слуша курс инсталација програма на почетку курса, ја то радим од кад сам почела да држим Р. Разлог је једноставан: програмски језик Р је једноставан за инсталацију (за разлику од власничког софтвера као што су ЛабВју (енг. LabView) и Матлаб где инсталација траје јако дуго), Р се може инсталирати за пар минута. Најчешће коришћен ГУИ за рад у програмском језику Р је РСтудио. Ако би смо инсистирали на поређењу рада у Р-у и у Пајтону, ово би била велика предност Р-а, јер у Пајтону уопште није једноставно одабрати одговарајући ГУИ, а Ауторка текста је имала низ проблема у раду са њима. Такође, РСтудио се инсталира у року од пар минута и отприлике за око 5 минута полазници курса су подесили све што им је потребно на својим рачунарима да би се бавили науком о подацима и да би написали свој први код. За више детаља погледати R for Data Science курс који је одржан у октобру 2018. године у оквиру ПССОХ конференције, али и на Филозофском факултету Универзитета у Београду у новембру 2018. године.

Историја Р-а

Ако се ја питам, једна од великих мана Р-а је његово име. Настао је на основама програмског језика Ц (који је креиран у Беловим лабораторијама 1976. године). Ц језик је једноставно назван по статистици (енг. statistics), па су креатори Рос Ихака (енг. Ross Ihaka) и Роберт Џентлмен (енг. Robert Gentleman) крстили програмски језик Р почетним словом својих имена. Проблем који ја имам са овим именом је претрага. Ако у било ком претраживачу пробате да користите слово „R“, убрзо ћете се предомислити и уместо „R“ куцаћете „R programming“ или на српском „Р програмски језик“. Р постоји већ 25 година (од 1995. године је објављен под ГНУ лиценцом), али је његова распрострањеност код нас већа тек у задњих пар година. Додатно, постоји недоумица са именом програмског језика Р-а на српском језику. Постоје 4 опције за изговор и све су валидне (1) америчко /ɑр/, (2) британско ɑː(р) (да би се уочила разлика погледати нпр. британски и амерички изговор за реч car), (3) српско Р или (4) латинично ЕР. Ја користим први назив, јер је најчешће у употреби, али ствар је избора.

Broj paketa na CRAN-u zabeležen na početku letnjeg semestra u školskim 2016/17., 2017/18. i 2018/19. godinama na ETF-u za potrebe TOBS predmeta. R kod koji omogućava prikaz ovog grafika (sa osama i naslovom na engleskom jeziku je dostupan online na: https://github.com/NadicaSm/simpleRgraph, pristupljeno 18.03.2019.)

У почетку, Р се користио само за статистичка прорачунавања (иста примена као програмски језик Ц). Временом примена Р-а је порасла и сада се Р користи највише за анализу података, машинско учење, визуелизацију и биоинформатику. Генерално, јавност (и стручна и шира) није упозната са чињеницом да је Р слободан софтвер. Овај текст нема за циљ да читатељке и читаоце упознаје са разликама и сличностима слободног софтвера и софтвера отвореног кода, али би требало споменути да постоји верзија Р-а коју је Мајкрософт прерадио и отворено је доступна (програмски језик отвореног кода) под називом Мајкрософт Р Опен. Репозиторијум пакета се као пандан слободном Р-у (ЦРАН) назива МРАН4 (од Microsoft R Application Network). Репозиторијуми су места на којима се налазе различити Р пакети. За оне који нису упознати са термином пакета (у неким програмским језицима уобичајени називи су алатке, библиотеке и сл.) то су скупови функција које су фокусиране на решавање одговарајућих задатака, али могу садржати и податке. Пример пакета са функцијама је dplur5 пакет који омогућава ефикасан рад са дата фрејмовима тј. табеларним подацима у Р-у. За разлику од dplur пакета који садржи искључиво алате и функције, ISwP6 пакет садржи само податке. Наравно, ЦРАН није једино место где се могу наћи одговарајући пакети. Програмски језик Р је врло популаран у биоинформатици и то захваљујући Биокондактор (енг. Bioconductor) пројекту који служи за размену програма и њихову примену, па сајт овог пројекта садржи низ слободно доступних пакета. Додатно, лични репозиторијуми на платформама као што су ГитХаб и БитБакет садрже велики број пакета. Мој савет свима који преузимају пакете из непроверених извора је да то раде када се од њих очекује инстант резултат који не мора да буде ни тачан ни робустан. У супротном, пожељно је проверити детаљно преузети код, тестирати га и по потреби написати сопствени код.

Предности Р-а

Чињеница да је Р слободан софтвер је предност сама по себи. Чак и за оне који нису поборници филозофије слободног софтвера или их она не занима. Разлози, између осталог, укључују цену и велику и активну заједницу у односу на друге комерцијалне варијанте (нпр. СПСС, Матлаб). У Београду има пар група које су активне на територији целе Србије као на пример Data science заједница у Србији и R-Ladies у Београду. Организација и предусретљивост свих у заједници, у Србији и на глобалном нивоу, је за сваку похвалу. Генерално, чак и за оне који не желе никога да упознају постоји опција, а то је задивљујуће велика количина информација, туторијала и књига која је на располагању на Интернету. Тај број је и даље у порасту. На пример, број пакета током фебруара за три године 2017, 2018 и 2019 са ЦРАН – је приказан на Сл. 1. За тренутни број пакета погледати на следећем линку. Р код за график са Сл. 1 је доступан на ГитХаб страници.

Мане Р-а

Објекти у Р-у су смештени у меморију рачунара тј. ако величина учитаних података буде већа од отприлике половине РА (енг. Random Access) меморије на рачунару онда може настати проблем са складиштењем. О овоме се пуно прича у Р заједници, па су нека од понуђених решења: (1) обезбедити “довољно велики” РАМ на рачунару (постоји и сјајан чланак на тему поређења брзине раста података и Рама из 2015. године), (2) рад на серверима тзв. “облацима” омогућава да се превазиђе проблем са меморијом (нпр. могуће је користити Хадуп Апачи) или (3) рад са специјализованим пакетима који омогућавају управљање меморијом (нпр. bigmemory пакет). Поред наведних, постоји и једноставна метода која се састоји из тога да се у Р-у прочита део фајла и да се процени меморија која је потребна за смештање података, па да се онда примени одговарајућа метода манипулације подацима. Друга мана Р-а је уједно и његова врлина, тј. чињеница да се ради о слободном софтверу. Ако желите да радите нешто што нико раније није радио у Р-у, онда неће постојати ни пакет ни код од ког би сте могли да кренете, већ ћете морати сами да их напишете.