2018-01-01から1年間の記事一覧

dplyr 0.8.0を使ってみた(新機能編)

困惑しそうな変更点の話は書いたので、次はテンション上がりそうな新機能の話を書きたいと思います。

dplyr 0.8.0を使ってみた(group_by()のbreaking changes編)

更新(2019/02/19): いろいろ議論があって、group_by()のデフォルトの挙動はこれまでと同じ(empty groupはつくらない)ようになりました。 group_by()するときに.drop = FALSEとした場合だけ、empty groupがつくられます。 dplyr 0.8.0がもうすぐ(来年1…

Apache Arrow東京ミートアップ2018で「RとApache Arrow」について話してきました

ほんとに私でいいんだろうか...という気持ちでしたが、Apache Arrow東京ミートアップ2018でRとApache Arrowの現状と未来の妄想について話してきました。 色んな分野の話を聞けてとても勉強になりました。 たぶんこのブログを読むのはR界隈の人だと思うので、…

hashicorp/hcl2でHCLファイルをパースする

Go

Goを書いてると、設定ファイルにはHCL使ってみるか、という気分になったりすることがある。 普通に考えるとgithub.com/hashicorp/hclが正解なわけだけど、 を見つけてしまったので使い方のメモ。まだまだexperimentalとはいえ、Terraformに使われてたりする…

Tokyo.Rでtidyevalが必要な理由について発表してきました

R

第74回R勉強会@東京で、「Yet Another Introduction to tidyeval」というタイトルで発表してきました。 申し込み時は「tidyeval入門以前」というタイトルにしてたんですけど、別にこれを知らなくてもtidyevalにはするっと入門できます。ビビらせてしまってす…

メモ:rlangのquo_name()、quo_text()、quo_label()、as_string()あたりの使い分け

R

TL;DR quo_name(): 名前のついていない引数に名前をつけるときに使う(例: data.frame(a)とやるとaが列名になる、みたいなこと) quo_label(): quosureや表現式を短めの文字列に変換するときに使う quo_text(): quosureや表現式を省略なしの文字列に変換す…

readrパッケージがWindows上だと日本語のパスを読めない問題の現状

追記(2020/04/27): 「それでも直らない問題」は、vroomはBoost使ってないのでいけるはず(未確認)とのことで、いずれ readr がバックエンドとして vroom を使うようになればもう問題ないはずです。 追記(2018/11/23): この問題を修正したバージョンのr…

メモ:GCEのGPUインスタンスでRStudio Serverを使いたい(未完)

完成してないけど、忘れそうなのでメモ。

メモ:reticulateがPython3になってくれなくて生きるのがつらい

Kerasインストール済みのRStudioのDockerイメージがほしい。それだけのことができなくて、秋。みたいな。 たぶん私がPython弱者すぎていろいろやり方を間違えてるんだと思うんですけど、reticulateが思った通りに動いてくれなくてつらかった話をメモ。

メモ:...はそのまま渡すならenquos()して!!!する必要はない

tidyeval本を読んでいて知ったのでメモ。

メモ:sort()にpartial引数を指定すればpartial sortingでちょっと速くなる

R

ふとbase::quantile()と自作関数を比べていると、baseの方が2~3倍くらい速いことに気付いた。

S3メソッドのdouble dispatch

R S3 S4

複数のggplotオブジェクトをリストとして保持する独自のクラスを考えます。こんな感じ。

vctrs::vec_method_register()が必要な理由

これがなぜ必要か、という話をします。 独自のパッケージに独自のクラスをつくったとき、必須ではないけど合わせて使うと便利、みたいなパッケージにS3メソッドを提供することが人間だれしもありますよね。ちなみに私は、まだないです。

メモ:R MarkdownにpLaTeX用のdocumentclassを適用する

というのは、たとえばjsarticleを使いたい、みたいな話だけど、これは端的にできない。 ので、.texを吐き出した後に手動でplatexするしかないっぽい... (免責事項:LaTeXまったく詳しくないです。間違ってたら優しく教えてください...)

メモ:knitrのoutput hookを使ってパスを隠す

実行結果にパスが含まれる系のやつ、なんか恥ずかしいので隠したい///と思うことがたまーにありますよね。 そんなときはknitrのhookです。 output hookには8種類ありますが、必要に応じて使い分けましょう(書き換えようとしている出力がメッセージか、警告…

Apache Arrowの現状確認(2018年7月)

追記(2018/07/18): すみません、Twitter上でいろいろ間違えている部分をご指摘いただきました(ありがとうございました)。 コピーしなくても計算はできる ただし結果をメモリ上に上書きすることはできない GandivaはArrowにマージされのを目指している …

メモ:Rの関数の引数

R

よく分からない質問が来たのでメモ。 f <- function(x ..., y=NA, z=0)が良さげですよ。参照: https://t.co/ERf8JBCo5U#yutaniR https://t.co/wcU0bruxUY— Shinichi Takayanagi (@_stakaya) 2018年7月12日

ggplot2 3.0.0を使ってみた

(この記事は「ggplot2 2.3.0(RC版)を使ってみた」として2018/05/27に公開していたものです。バージョン3.0.0としてリリースされたのでタイトルを変えました) ggplot2 3.0.0がリリースされました。例によってこのニュースを追ってみます: 公式のアナウン…

メモ:ggplot2::geom_sf()が遅い場合

ここでいう遅い、というのは、 plot()と比べて geom_point()、geom_line()、geom_polyon()と比べて という意味。

メモ:ggplot2::geom_sf()の背景にOpenStreetMapの地図画像を使いたいときはggspatial::annotation_map_tile()

ggspatialがsf対応したらしい。このパッケージはところどころイケてない感もあるけど*1、まあでも自分でパッケージつくるよりは楽そうなので、まあ使うかーという感じ *1:とりあえず、ライセンス表示つけてほしい...

RユーザのためのRStudio[実践]入門 という本が出ます。

というタイトルでみんな揃えているようなので、合わせてみました。↓この本(通称「宇宙本」)です。 もう紹介ポイントはだいぶ出尽くしている感じはするので、詳しい内容よりもエモみ重点で書きます。

メモ:ggplot2::geom_sf()でポリゴンの境界に点線を引きたいときはsf::st_union()とsf::st_line_merge()

geom_sf()と戯れていて、ちょっと点線でも引いてみるか、と思ってやってみると、なにこれ??という感じの汚い線の図になりました。 library(ggplot2) library(sf) #> Linking to GEOS 3.6.1, GDAL 2.2.3, proj.4 4.9.3 nc <- sf::st_read(system.file("shap…

メモ:MinGWからEmacs+ESSでRのコードを書くときに設定する環境変数

MinGWでビルドしたEmacsを使ってるんですが、依存ライブラリとかの関係でmsys64.exeから立ち上げる必要があります。

gghighlightがあらゆるGeomをハイライトできるようになりました(たぶん)

gghighlightパッケージは、データ系列が多すぎるとき、いい感じに一部をハイライトしてくれるパッケージでした。 もうすぐリリース予定のggplot2 2.3.0の新機能を使ってパワーアップ中です。 詳しい解説はおいおい書くとして、簡単に紹介だけします。

ggplot2::geom_sf()を使ってみる

ggplot2 2.3.0全体の変更点については以下に書きましたが、その中でも目玉の一つgeom_sf()について軽く紹介します。

メモ:ggplot2でGeomの直接の子クラスはいくつあるかを調べる

たとえば、GeomBarはGeomRectの子クラスです。 class(GeomBar) #> [1] "GeomBar" "GeomRect" "Geom" "ggproto" "gg"

メモ:リストの要素を消したいときはx[i] <- NULL、NULLを代入したいときはx[i] <- list(NULL)

R

ってFAQに書いてあるのを毎回忘れるのでメモ。 In R, if x is a list, then x[i] <- NULL and x[[i]] <- NULL remove the specified elements from x. The first of these is incompatible with S, where it is a no-op. (Note that you can set elements to…

メモ:環境をコピーしたいときはrlang::env_clone()

R

環境、というかggplot2のレイヤーをコピーすることを考えます。 まず、1つレイヤーをつくります。 library(ggplot2) d <- data.frame( x = 1:4, y = 1:4 ) l1 <- geom_point(d = d, aes(x, y))

メモ:行列を列ごと・行ごとのベクトルのリストに変換したいときはsplit()にcol()/row()

R

combn()は行列を返すけど、ベクトルのリストを返してほしいんだよなー、と思っていろいろ調べてた時のメモ。 col()/row()でそれぞれ列と行のインデックスが取れるので、これをsplit()に渡せば分割できる。簡単ですね。

「再現可能性のすゝめ―RStudioによるデータ解析とレポート作成― 」(高橋康介 著)を読んだ。

著者の方のご厚意でこの話題の本を頂きました。 今知るべき再現可能性についての知識がコンパクトにまとめられている良書です。