Így készíts docx fájlt R-rel!

Sikerült R-rel olyan jelentést készítenem, amit utólag tudok szerkesztgetni Wordben. Hogy ez miért nagy szám? Mert egyben megírhatom a kódot, meg közérakhatom a fejezetcímeket, és így tulajdonképpen készen lehetnek az ábrák amikről csak írnom kell, ha szeretnék, oldalakat. De ha nagyon ismerem az anyagot, akár ott helyben, R-kódok között megírhatom a jelentést.
Ez alapvetően nem annyira nagy dolog, hiszen a Rapporter már régóta csinál ilyet.

Én először csak véletlenül akadtam Tal Galili blogján a leírásra, és bevallom, nem is teljesen értem a mögöttes rendszerek működését. Hogy mit és pontossan hogy csinál a pandoc? Hogy miket jelentenek a knitr csomag beállításai? Fogalmam sincs. Viszont a magam dolgának megkönnyítése végett az ott leírt folyamat köré írtam egy függvényt, ezt most leírom, hogy működik (ami nem nagy dolog, nagyjából megegyezik azzal, amit a hivatkozott bejegyzésben Tal is leírt).

1.: R-ben telepítsd a pander csomagot, ami minden más szükséges csomagot telepíttetni fog.

2.: Telepítds a pandoc nevű programot. Ennek kétféle módja van:

2a.: R-ből az installr csomag segítségével

Ennek a módszernek az a hátránya, hogy nekem nem működött sehogysem az install.pandoc(). Ezért megpróbáltam natúr, magamtól telepíteni.

2b.: Telepítés önmagában:

A pandoc elérhető a Github-on, letöltöd, majd futtatod az msi fájlt, telepítés után pedig

3. Indítsd újra a gépet!

Ez fontos, e nélkül a pandoc nem fog rendesen működni (valószínűleg. De lehet, hogy igen).
Ezzel tulajdonképp megvannak az alapok.

4. Írd meg, amit szerkeszteni szeretnél utána

A markdown alapszabályai szerint, illetve R markdownban. Nem bonyolultak az alapok, érdemes utánanézni. Miután pedig kész, elmented, és megjegyzed hogy hol és milyen néven van a fájl.

5.: rmd2docx(source)

Innentől jön az általam egy parancsba gyógyított eljárás, ami a következőképp néz ki:
(A source helyére természetesen nem mást, mint a korábban elmentett markdown fájl helyét és nevét (teljes fájlnév, elérési út) kell beírni két idézőjel közé, entert nyomni, és már hasít is a gép)

5a.: Először beállítja a megadott fájl mappáját munkakönyvtárnak (ez később lehet, hogy problémát fog okozni, egyelőre kézenfekvőnek tűnik), aztán megkeresi a fájlnevet, majd külön a kiterjesztést, hogy megnézi, rmd fájl-e a bemenet. Mivel a kiterjesztés nem jelent semmit, ezért csak üzenet a usernek, lehet hogy lefelejtette:

5b.: Beolvassa a megadott fájlt, az elejéhez hozzáfűzi a megadott beállításokat, majd egy ideiglenes fájlba elmenti.

5c.: Betölti a knitr csomagot, majd előbb hagyományos markdown fájlt készít belőle (feldolgozza az R kódokat), aztán összerak belőlük egy html fájlt:

Eddig ezt csak ábrák nélküli dokumentummal próbáltam. Érdemes lenne létrehozatni az R-rel egy mappát, hogy abba mentse, amit aztán egy az egyben lehetne törölni, mint szemetet, miután kész. Ez a jövő zenéje még.

5d.: Miután megvan a markdown fájl, a pandoc-kal készíttetünk belőle a word által olvasható fájlt:

A második argumentuma a paste0() függvénynek nem más, mint az eredeti rmd fájl neve, így név alapján könnyen megtaláljuk majd az új fájlt, illetve külöböző fájlok nem fogják egymást felülírni.

5e.: Ezután pedig töröljük a korábban létrehozott markdown és html fájlokat:

És fel is takarítottunk magunk után, az eredeti fájl mellett ott virít büszkén a Worddel szerkeszthető doksi, benne az alap formázásnak megfelelő kínézetű, stílusokkal rendelkező szöveg, táblázatok, képek, sikeresen megoldottuk a feladatot. o/

A kód egészében természetesen elérhető GitHub-on!

Via: Így készíts docx fájlt R-rel!