まだよく分からない…
先日の記事
にもちょっとだけ書いた、drake
ってパッケージ、
を、つかいはじめているものの、イマイチ使い方を理解しきれておりませぬ。
そんななか、TwitterのShinyappsRecentのつぶやき、
New Shiny App: one supporting drake itself https://t.co/xYFc0cTOHF #rstats pic.twitter.com/wTS7MhEC9o
— Recent Shiny Apps (@ShinyappsRecent) 2018年4月28日
で、shinyのアプリでdrake
のtutorialがあることを知りました。
https://krlmlr.shinyapps.io/cooking-drake-tutorial/
正直drake
パッケージ公式のvignetteとかReadmeは読んでも良く分からないところがあるので(なんとなくはわかる)、手を動かして体験できるのは良いですね。
一応、Rmdに対しても使えるようで、 Rmdファイルの例として、テンプレートで生成される下記のコードを含んだファイルをhoge.Rmdとして保存し、
--- title: "Untitled" author: "niszet" date: "2018年4月29日" output: html_document --- \```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) \``` ## R Markdown This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>. When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this: \```{r cars} summary(cars) \``` ## Including Plots You can also embed plots, for example: \```{r pressure, echo=FALSE} plot(pressure) \``` Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.
以下でplan
を作成、make()
してconfig
を作って依存関係を表示すると、
plan <- drake_plan( rmarkdown::render( knitr_in("hoge.Rmd"), output_file=file_out("hoge.html"), encoding = "UTF-8" ) ) make(plan) config<-drake_config(plan) vis_drake_graph(config)
のように表示されました。ので、Rmdであっても一応動くようです。
20180430 1510追記
ここで、Rmd中に日本語が含まれているとNGという形で書いていたのですが、yutannihilationさんから
render()に関しては、encoding="UTF-8"でいけたりします?
— Hiroaki Yutani (@yutannihilation) 2018年4月30日
とご指摘いただき、試してみたところうまくいきました。Rmd->htmlへの変換のrender()
部分でencodingの指定さえしていれば変換自体は問題なく動作しました。上記コードにはそのオプションも追記している形で、Rmdの日付も日本語の表記にしておきました。お試しください。
ただし、drake
自体は日本語を受け付けていないような挙動があったので、調査中です。ソース中のコメントに日本語が入っているとダメだった気がするので…。これの再現性を確認しないといけないですね…。
あと、Rmd中でデータのimportをしている場合にその依存性を検知していない(はず)です。具体的にはread_csv()'とかで読んでいるファイルが変化しても
make()が反応しない、とか。これも調査中です。最終的には成果物をRmdにして管理したいので、
drakeとRmdをうまく共存させたいのですよね。単なるプロジェクトとしてならば
drake`で十分管理できるとは思うのですが。
パッケージ化とかパッケージのバージョン管理とかの話もあるし、どのタイミングで何をどう管理するのが良いのか?がまだ良く分かりません…精進。。。
20180430 1510 追記ココまで
そして、たまに暗黙の依存関係を解決できない旨のwraningが出たり、htmlを出力出来ているのにdrake
側からそれを検知できないということがあります。
再現可能なコードを作ってissue投げたいんですが、うまく再現しないこともあるのでちょっとコードを理解しないとこれは厳しいか…??
再現可能な環境の作成は大事なので、ちょっと頑張る…かも。
Enjoy!!