R Markdown with Polymode on Emacs
Wed 26 October 2016Data Analysis အလုပ်တွေဟာ Data Science ဆိုတဲ့ နာမည်အသစ်နဲ့ ပေါ်ပြူလာဖြစ်လာတဲ့နောက်မှာ Reproducible Research ဟာလည်း လိုအပ်ချက်အခုအနေနဲ့ အသုံးများလာတယ်။ Reproducible Research ဆိုတာက အလွယ်ပြောရရင် Data Analysis လုပ်တဲ့ Process တခုမှာပါတဲ့ Data တွေကို Pre-Processing လုပ်တာတွေ Analysis လုပ်တဲ့အခါသုံးတဲ့ Software Code တွေရယ် ထွက်လာတဲ့ Result တွေရယ် Visualized လုပ်ထားတဲ့ Graphic တွေရယ် Interpret လုပ်ထားတဲ့ သုံးသပ်ချက်တွေရယ်ကို Document တခုထဲမှာ စုပေါင်းပြီးတော့ ထိမ်းသိမ်းထားမျိုးကို ခေါ်ကြတာပေါ့။ တနေရာထဲမှာ ပေါင်းထားတာ ဘာထူးခြားလဲမေးရင် Document ထဲမှာ သုံးသပ်ပြထားတဲ့ Result တွေနဲ့ Graphic တွေဟာ ကိုယ်သုံးထားတဲ့ Software Code တွေကို Execute လုပ်မယ်ဆိုရင် တကယ်ထွက်လာတဲ့ Result တွေဖြစ်တဲ့အတွက် လုပ်ရိုးလုပ်စဉ်လို တခြားတနေရာက Software တခုမှာသွားပြီးတော့ Analyze လုပ် ထွက်လာတဲ့ Data တွေကို Manually အနေနဲ့ Document ထဲမှာသုံးဖို့ ပြန်ထည့်တာမျိုး မဟုတ်တဲ့အတွက် Result တွေကို ပြုပြင်ထားတယ်လို့ သံသယဖြစ်စရာ မရှိတော့သလို အငြင်းအခုံဖြစ်မယ်ဆိုရင်လည်း Data နဲ့ Source Document ကို တခြားလူကို ပေးလိုက်ပြီး Compile လုပ်မယ်ဆိုရင်လည်း Result တွေဟာ အပြောင်းအလဲမရှိရဘူး အတူတူပဲဖြစ်ရမယ်လို့ ရည်ရွယ်တဲ့အတွက် Reproducible ဖြစ်တဲ့ Research လို့ခေါ်တာပေါ့။
Reproducible Research က အခုမှပေါ်တာတော့ မဟုတ်ပါဘူး အရင်ကတည်းကရှိပါတယ် Emacs အတွက် Org-Mode မှာ အစောကြီးကတည်းက သုံးလို့ရတယ် Personally ဆိုရင် Org-mode ပဲ သုံးလေ့သုံးထရှိပေမယ့် အများနဲ့ဆိုရင်တော့ တခြားလူတွေ နားလည်နိုင်တဲ့ Document Format တွေနဲ့ပဲ ပေးရတာပေါ့လေ။ သိပ်ပြီးတော့လည်း ရွေးစရာမရှိပါဘူး အသုံးအများဆုံးက IPython ဖြစ်လိမ့်မယ် အရင်ကတော့ IPython Notebook မှာ Python တခုပဲသုံးလို့ရလို့ အကန့်အသတ်နဲ့ပဲ သုံးကြပေမယ့် အခုနောက်ပိုင်းမှာ Jupyter Notebook ဆိုပြီး ပြောင်းလိုက်တဲ့နောက်တော့ R လိုမျိုး တခြား Language တွေလည်း သုံးလို့ရလာတဲ့အတွက် အတော်အဆင်ပြေတယ်။ R အတွက်က RStudio ဟာ အသုံးအများဆုံးပဲ RStudio ကလည်း R Markdown ဆိုပြီးတော့ Notebook ပုံစံမျိုးအနေနဲ့ ထုတ်ပေးထားတာလည်း အတော်ကောင်းတယ်။ R Markdown က Org-mode သုံးနေကျ ကိုယ့်အတွက် ပိုပြီးတော့အဆင်ပြေတယ်။ Workflow ကလည်းရှင်းပါတယ် Markdown တွေမှာ R Code တွေကို ရောရေးထားတာကို Knitr ဆိုတဲ့ Package က Result တွေကို သင့်လျော်သလို ဖြည့်စွက်ပြီးတော့ Pure Markdown ထုတ်ပေးပြီးမှ လိုချင်တဲ့ Format ကို Pandoc နဲ့ပြောင်းလိုက်တာပါ။ ကိုယ့်ရဲ့ပြဿနာက RStudio မသုံးပဲနဲ့ Emacs ထဲမှာ ESS နဲ့သုံးနေတာ အသားကျနေတော့ Jupyter အတွက်က Emacs Client နဲ့ အလုပ်ဖြစ်ပေမယ့် R Markdown ဆိုရင် RStudio ဖွင့်ပြီးသွားပြီးတော့ သုံးနေရတဲ့အတွက် နည်းနည်းတော့ ကသီလင်တနိုင်တယ်။
Image From: http://rmarkdown.rstudio.com/lesson-images/RMarkdownFlow.png
ရှာရင်းဖွေရင်းနဲ့ ကိုယ့်လိုဖြစ်နေတဲ့ ဒုက္ခသည်တချို့တွေ့ပြီး Polymode သုံးရင် အဆင်ပြေတယ်ဆိုလို့ စမ်းသပ်ကြည့်တော့ R Studio ထဲမှာ သုံးတာလောက်တော့ မကောင်းဘူးလို့ ပြောလို့ရပေမယ် အတော်အဆင်ပြေပြေ သုံးလို့တော့ရပါတယ်။ Polymode ကို Install မလုပ်ခင်တော့ R အတွက် Knitr Package တော့ Install လုပ်ထားရမယ် ကိုယ်သုံးနေတဲ့ OS အပေါ်မူတည်ပြီးတော့ သင့်လျော်သလို Pandoc ကို Install လုပ်ရမယ် ကိုယ်ကတော့ Mac မှာ homebrew နဲ့ပဲ Pandoc ကို Install လုပ်ပါတယ်။ Polymode ရဲ့ Installation နဲ့ Config ကိုတော့ အောက်မှာကြည့်ပါ။
Polymode
https://github.com/vspinu/polymode
Installation via MELPA
M-x package-install polymode
Config
;;; MARKDOWN
(add-to-list 'auto-mode-alist '("\\.md" . poly-markdown-mode))
;;; R modes
(add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))
Install လုပ်ပြီးပြီးဆိုရင် သုံးရတာကလွယ်ပါတယ် အစမ်းအနေနဲ့ .Rmd နဲ့ File တခုကိုဖွင့်ပါ အဲဒါဆိုရင် Mode မှာ Polymode ကို သတိထားမိလိမ့်မယ် Polymode မဟုတ်ဘူးဆိုရင်တော့ Config ကိုပြန်ကြည့်ပါ။ ပြီးရင်တော့ M-n e နဲ့ Export လုပ်ကြည့်ပါ Export လုပ်ချင်တဲ့ Format တော့ သင့်လျော်သလို ရွေးပေးလိုက်ရင် အဆင်ပြေပါလိမ့်မယ် Export လုပ်တာ Error တက်နေရင်တော့ Error Log ကို နည်းနည်းပြန်ကြည့်ပါ Pandoc မရှိရင်လည်း Export လုပ်လို့ရမှာ မဟုတ်ပါဘူး။
References
http://stackoverflow.com/questions/16172345/how-can-i-use-emacs-ess-mode-with-r-markdown
http://johnstantongeddes.org/open%20science/2014/03/26/Rmd-polymode.html