備忘ログ

チラシの裏的備忘録&メモ

Rでポンド・ヤードをキログラム・メートルに華氏温度を摂氏温度に相互変換するパッケージを作った

タイトルの通り。

 

Rでポンド(オンス、グレーン)からキログラム、ヤード(インチ、フィート、チェーン)からメートル、華氏温度から摂氏温度に変換(その逆もできる)する関数群のパッケージを作った。

 

パッケージはgithubに公開している。

github.com

 

使い方はREADMEに書いてる。

一応GitHubなので英語もつけたが苦手なのでdeeplを使いながら書いた。

 

CARNとか、GitHub内を簡単に検索した範囲だと似たパッケージ見つけられなかったが、あっても別にいい。だって、そういうものだから。作りたいもの作る!

 

(追記)あった

GitHub - colin-fraser/convertR: Unit conversions

しかも、引数でどの単位系からどの単位系に変換するかを指定できるので一つの関数で色々変換できる。

 

やっていることは与えられた値をかけたり、割ったりしているだけの1行だけの処理なのでさもない処理。

 

以下は個人的雑感でどうでもいい話。

 

なんでこんなのつくったのか

一行だけの簡単な処理なので、自前で自作関数を作るのが多分普通の流れなんだと思う。

軽くググった範囲でも見つけらなかったので、各々いいように処理しているのだと思う。

そんな中で、わざわざパッケージ化して公開したのは、いろんな環境でサクッと計算したいから。

 

1ポンド何キロって聞かれても、日常的に使用することがなければ普通はすぐに出てこない。

ググればすぐに出てくるのでその数字をもとに使い捨て自作関数を作って処理することになると思うし、データフレームに体重がポンドで入力されていたら使い捨て関数をapplyやprrrで処理するのがよくあるパターンなのかもしれない。

その時はそれでいいかもしれないけど、半年後とかにまたポンドをキログラムに変換しなければいけないとなったときに、自作関数をどこにおいたか忘れたら一行処理なのでまたググることになるけど、結局同じ関数をまた書くことになるのだからちょっとめんどくさい。

自作関数をちゃんと管理してとっておければいいけど、割とどこに保存したのか忘れるし、どういう処理で結果が得られるのか忘れる。

あと、prrrで~で処理するならまた別だけど使い捨て関数といえども関数名をつけるのがちょっと悩むし、適当な名前(fとか)をつけると名前の衝突とか別の使い捨て自作関数で上書きしないか気になり始める。

じゃあいっそパッケージ化してしまえば万事解決(!?)。

じゃあ折角なら、ポンドヤードとよく米圏でみる華氏温度も変換できる関数群をまとめてパッケージ化したほうがいいしということで作った。

 

あとはパッケージを作るのは楽しいがネタがなかった

自作関数を作るよりもややお作法的なのがあるので、簡単なパッケージでもdevtools::check()が通ると嬉しい。

 

俺俺所理系パッケージだとGithubにあげられないし、難しい処理系は作れないし。

 

別件:本当に作りたいパッケージは別にある

R上で明治5年以前の和暦を西暦に変換したいと思っているがなかなかままならない。

年号だけ明治4年1871年に書き換える処理をするパッケージならzipanguなどがあるがちょっと違う。

和暦を西暦(グレゴリオ暦)に変換する関数を作りたいが、暦は沼(というかいろいろめんどくさいの)だといろいろ調べてるとわかってくる(あまりに普段から普通に接しているから意識しないがグレゴリオ暦も含めて真面目に考えれば考えるほどにめんどくさい)。

 

御存知の通り、明治6年の改暦以前は天保暦で暦が異なり、和暦からグレゴリオ暦に変換するのに単純に変換できない。

日付がちょっと異なるだけでなく、例えば明治4年1871年2月19日から1872年2月8日までになるので年数だけ計算するのもままならない。

和暦の閏月の処理も大変、決定するのに参照するデータが多い。しかも寛政暦や宝暦暦など、改暦は複数回なされていてそのパターンが変わる。

しかも、実際に使われていた範囲内のみであればまだしも、実際に使われていない範囲に拡張しようとなるとまさに閏月の決定が混迷を極めるパターンが発生してしまう(有名所で2033年問題)。

 

正確性と速度的にはパッケージのサイズがでかくなるが、自前でその都度計算するよりも、実際に天保暦が使用された29年の範囲でデータセットを入れてそこを検索する使用にしたほうが29年分なので簡単そう……

ただし、内閣総理大臣経験者でも寛政暦の範囲の人物がいるので寛政暦までサポートしたいところだが、そうすると85年分ものデータが……データがでかすぎる、というところで尻込みしている。