Top

鐵人三國誌・アーカイヴ

Latest update on 2021年7月4日 (日) at 18:43:39.

目次

【第215回】 メモとToDo(2019年10月6日)

パイプ沼

R-develというR本体やパッケージの開発者向けメーリングリストがあって,時々マニアックに盛り上がることがあって面白い。

今回はmagrittrパッケージのパイプ演算子%>%より10倍以上速いシンプルなパイプ演算子の関数定義を考えてみたんだけどどう思う?というAnt Fさんからのメールが発端だった(ちなみに定義と用例は以下)。magrittrのパイプに比べると,.を後方の関数に引数として与えなくてはいけないので少し使い方は違うが,まあ一見パイプ風にはなっている。

`%.%` <- function (e1, e2) {
eval(substitute(e2), envir = list(. = e1), enclos = parent.frame())
}


iris %.% head(.) %.% dim(.)
#> [1] 6 5

最初の反応は,パイプに反対じゃないんだけど,パイプがなくても困らないというJeff Ryanさんからのもの。実はぼくも同感だったが,それで終わりにならないのがR-develの沼の深さだ。

次のメールがわざわざ関数定義しなくてもbase Rはパイプ処理みたいなことはできるよというJohn Mountさんからのものだった。wraprというパッケージで%.>%という「ドットパイプ」をmagrittrの%>%より良いものとして開発した方である。曰く,既にBizarroパイプと呼んできたが,関数定義などしなくても,->.;でいいとのこと。意味は,.に後方付値して,マルチステートメントで次の文につなぐということで,確かに,John Mountさんが出している例を見ると,似たようなことが実現されていた(下に引用しておく)。

iris ->.; head(.) ->.; dim(.)
# [1] 6 5

なるほど,と思ったが,Antさんは引かなかった。Bizarroパイプにはたくさん欠点があるし"lazy evaluation edge cases"では使えないけど,自分が定義した%.%はいつでも使えるというのだ。

するとJohn Mountさんからすぐに返事があった。そういう場合もBizarroパイプに中括弧(Curly braces)を組み合わせれば大丈夫ということだ。

その一方で,パイプを使う人の多くはパイプそのものというよりtidyverseを使いたいんだから,パイプだけ定義するのは違うんじゃ? みたいな返信もあったりして(Ant Fさんはそれにもポイント外してると反論していて),沼としか言いようがないと感じた。

世界食事データベース

Global Dietary Databaseというものがあって,これを使った研究がBulletin WHOLancet Planetary Healthに載っている。

世界の食糧生産と消費の見通しについてはFAOのレポートが良く引用されているが,実際に世界の人々が何をどれくらい食べているのかについてのデータベースができているとは知らなかった。まあ,どの程度の精度と信頼性と代表性があるのか,ちゃんと見てみないとわからないが,論文掲載誌からすると,ある程度ちゃんとしたものなのだろう。

講義資料作成など

今日もいい天気だ。世界陸上の男子マラソンは優勝タイムが2時間10分を超える悪条件だったが,女子のときほど気温も湿度も高くなく,女子のようには途中棄権は出なかったし,川内選手の想定よりトップ選手は速かった。しかしやはり30℃を超えるような環境ではマラソンはしない方が良いと思う(男子マラソンスタート時は29℃,湿度51%だったとのこと。しかも夜中だから日射はゼロ。周回コースだしアップダウンもほとんどない。それでも優勝タイムが2時間10分を超えた。来年の東京五輪で現在の計画通り女子8月2日,男子8月9日の朝スタートなら,たぶん30℃は超えるし日射も強いしアップダウンもあるから,途中棄権が続出するくらいでは済まないだろう)。これから出勤して講義資料作りの予定。

Environmental Health第2回はたぶん拡充必要あり。Epidemiologyでtechnical termsというかkey wordsは日本語でも知っておく必要があるため,講義中に補足するよりも各回に出てくる用語説明を配付資料として作ってしまう方が良かろう。かつて作ったものをreviseすれば行けるはず。

……というわけで,次回分を完成させてから帰途に就いた。

セリーグCSが熱い。北條選手に代走を出すという謎采配がなければタイガースが勝っていたような気もするが(それ以前に,昨日も今日も初回に北條選手に送りバントをさせた消極的な采配は点につながっていないので裏目に出ていると思うが),最後の乙坂選手のサヨナラホームランで流れがベイスターズに移った気もする。

(list)

前【214】(洗濯とか(2019年10月5日) ) ▲次【216】(講義2コマとご恵贈御礼含め本が5冊届いた件(2019年10月7日) ) ●Top

Notice to cite or link here | [TOP PAGE]