JAK PROPOJIT R-KO a EXCEL aneb Aby se uživatel nasytil a statistik zůstal celý Ondřej Vencálek listopad 2008
Motivace Jak to udělat, aby se panu doktorovi ušetřila práce, a přitom aby se nemusel učit R-ko?
RExcelInstaller - co si přečtete
RExcelInstaller - co uděláte stánete baĺıčky Rcmdr, rcom a RExcelInstaller (automaticky se stáhne ještě několik dalších potřebných baĺıčků) baĺıček RExcelInstaller obsahuje jen dvě funkce. Z prostředí R-ka volejte funkci installrexcel(mysite="http://rcom.univie.ac.at") (viz přiložený pdf soubor). Druhá funkce upravuje problémy při volání html nápovědy, je-li defaultním prohĺıžečem Firefox.
Excel - úvod Dále už pracujete s Excelem. V hlavním menu přibyla položka RExcel. K pochopení možností pomůže nováčkovi několik demo-file-ů.
Excel - úvod
Excel - úvod Jsou dva hlavní způsoby, jak využít propojení R-ka a Excelu: Prvním je práce v Excelu s online voláním funkcí R-ka. Druhým je vytvoření makra, které bude volat funkce z R-ka. Tento způsob mě zajímal, protože uživatel bude užívat makra bez toho, že by potřeboval porozumět principům spojení Excelu a R-ka natož aby se musel učit ještě nějaké nové funkce.
Excel - makra Co je to makro? Wikipedie odpovídá: Makro (software) je posloupnost funkcí resp. příkazů, které usnadňují určitou činnost. Známá jsou makra v programech Microsoft Word a Microsoft Excel. Používají se většinou jako posloupnost kroků při výpočtech a zpracování naměřených veličin.
Excel - makra
Excel - makra Otevřete-li si nejprve demo - Writing macros a teprve potom otevřete editor jazyka Visual Basic, můžete si prohlédnout již existující makra. Postupně si řekneme něco o třech položkách v nabídce Project - VBAProject (vlevo nahoře): MS Excel Objects - This Workbook References Modules
Excel - makra
Excel - makra - This Workbook Rozklikněme položku This Workbook, objeví se prostor pro obecné deklarace týkající se celého sešitu. Doporučuju ukrást toto nastavení z dema - funguje pěkně. Je nutno ještě v nabídce Properties - This Workbook nastavit hodnotu AcceptLabelsInFormulas na TRUE.
Excel - makra - References Aby bylo možno používat v makrech R-ka, je nutné nastavit v nabídce Tool - References položku RExcelVBAlib. Zaškrtněte ji!
Excel - makra - Modules Samotný prográmek se pak píše v tzv. modulech. Přidání modulu: Insert - Module je snadné. Hlavička vypadá následovně: Public ServerActiveAtStart As Boolean Samotná procedura vypadá takto: Sub Mojeprocedura()... End Sub
Excel - makra - Modules - příkazy Ne-R-kovské příkazy: Worksheets("List2").Activate slouží k přepnutí na jiný list sešitu MsgBox "Vzkaz pro uživatele" Vyskakovací okno informující uživatele
Excel - makra - Modules - příkazy R-kovské příkazy: RInterface.StartRServer příkaz pro spuštění R-ka RInterface.PutArray "rok", Range("List2!B1") vstup z Excelu do R-ka v uvozovkách název proměnné, Range udává buňku, odkud se načítá RInterface.RRun "source( SMR-vypocet.R )" spuštění R-kovského kódu v závorce je nutno použít jednoduchých uvozovek! RInterface.GetArray "celkem", Range("List2!B5") výstup z R-ka do Excelu v uvozovkách název proměnné, Range udává buňku, kam se zapisuje pokud je výstupem tabulka, užijeme RInterface.GetDataframe
Excel - makra - Modules - poznámka Pokud použijete příkazu source( priklad.r ), může tento mj. obsahovat načtení dat z externího souboru. Pokud při načítání není uvedena celá cesta, je nutno změnit pracovní adresář. K tomu v R-ku slouží příkaz setwd(). Jméno pracovního adresáře je možno zadat v excelovské tabulce a pak ho načíst a použít. Kód by vypadal následovně: RInterface.PutArray "a", Range("List1!A4") RInterface.RRun "setwd (a)"
Excel - makra - Modules - tlačítka K usnadnění spouštění makra můžete pro uživatele vytvořit klikací tlačítka. Tvorba je jednoduchá - půjčíte si vzorové procedury CreateToolbar() a DestroyToolbar() obsažené v demu pro tvorbu maker. Upravit názvy a popisky zvládne každý.
Excel - další lahůdky Docela hezké je dát uživateli možnost vybrat si pohodlně z nabídky několika možností (a tím mu zároveň nedovolit, aby si vyplňoval, co se mu zĺıbí). Viz ilustrační obrázek:
Excel - další lahůdky Nejprve si třeba na vedlejším listu napíšeme všechny možnosti, které uživateli nabídneme. Například pro faktor pohlaví možnosti žena, muž, bez rozlišení, pro faktor kouření možnosti kuřák, nekuřák, exkuřák, bez rozlišení ap. Možnost bez rozlišení určuje, že v analýze daný faktor nemáme zohledňovat. Označíme buňky, kde jsou uvedeny možnosti daného faktoru. Např. oblast A1:A3 a tuto oblast pojmenujeme: Vložit - Název - Definovat Pojmenujme ji třeba faktorpohlavi Vrat me se k buňce, kde budeme chtít dát uživateli na výběr. Označme tuto buňku kurzorem a z nabídky Data vyberme položku Ověření... V okně, které se otevře měníme Nastavení a to tak, že v nabídce Povolit zvoĺıme Seznam a v kolonce Zdroj pak uvedeme =faktorpohlavi. Nezapomeňte na to rovnítko!
Excel - další lahůdky To, co uživatel tímto způsobem zadá, může být pro nás vstupní proměnnou do R-kovské procedury. Výhodou je, že se nemusíme obávat, že by uživatel zadal něco, co nečekáme :)
Závěr Na závěr spust me ukázku toho, jak může vypadat finální (nebo částečný?) produkt našeho snažení...