niszetの日記

細かい情報を載せていくブログ

コミケ(C94)行ってきた

ざっくりと感想。

そんなわけで、初めて夏コミに行ってきた。冬は去年行ったんだけど、1日だけ。今回は1日目と3日目に行ってきたのです。

暑かった…

今年は本当に暑かった。今日は急に涼しくなったけど。なので、2日目は体力的に行けなかったのです。行ってみたかったが。

お目当ては技術同人誌で、1日目はハード、ソフト色々あり色々買いました。ふふふ。

3日目も技術系メインを目当てに行きましたが、1日目に手に入らなかったものやインフラ勉強会で知り合ったば~そんさんのところに行こうと思ったわけですね。しかし3日目も体力が限界で結構早めに撤収してしまいました。おっさんになると体力に自信がないのでちゃんと限界が来る前に撤収できる。えらい。

そんなわけで、積み同人誌が増えてしまいました。全然読み進められていませんね…。

まぁ、自分の原稿を進めていかないといけないのでは…?という感じですが。 そちらの話はまた追々(宣伝?も兼ねて)

(R) set.seed(71) の元ネタ(メモ)

結構前だけど元ネタ教えてもらった…

これだそうだ。

www.slideshare.net

ふむふむ。長年の謎が解けましたね…。

最近は見ないのですが、去年かな?見たときになんだろうこれ…みたいになってたので。新しく始める人(私もですが)にはわからないですよねぇ…

Enjoy!!

(R) reprexパッケージでfile読み込む場合の注意点

ファイル読むときも{}で囲う必要がある

先日、Rスクリプトreprexパッケージを使って表示させようと思って実行してみたところ、

> reprex::reprex(input="igraph_test.R")

Rendering reprex...
Error: Functions that produce HTML output found in document targeting markdown_strict output.
Please change the output type of this document to HTML. Alternatively, you can allow
HTML output in non-HTML formats by adding this option to the YAML front-matter of
your rmarkdown file:

  always_allow_html: yes

Note however that the HTML output will not be visible in non-HTML formats.

In addition: Warning messages:
1: In readLines(path) : incomplete final line found on 'igraph_test.R'
2: In grepl("#+ reprex-setup", data$body, fixed = TRUE) :
  input string 1 is invalid in this locale

こんなエラーが。これに地味に時間を食われました。ので、メモ。

reprex::rexprex()で入力をファイルにする場合、その全体が{} で囲われている必要があります。実際に実行した結果にはコードも表示されるので、結果だけ書けば

{
library(igraph)
library(tidyverse)

df <- data.frame(from=c(1,2,2,2,3,3,4), 
                 to=c(2,1,3,4,2,4,3), 
                 weight=c(0.7,1.3,1.7,0.7,1.7,1.7,1.2))

g <- igraph::graph.data.frame(df)

igraph::shortest.paths(graph = g, mode="out")}
#> 
#>  次のパッケージを付け加えます: 'igraph'
#>  以下のオブジェクトは 'package:stats' からマスクされています: 
#> 
#>      decompose, spectrum
#>  以下のオブジェクトは 'package:base' からマスクされています: 
#> 
#>      union
#>     1   2   3   4
#> 1 0.0 0.7 2.4 1.4
#> 2 1.3 0.0 1.7 0.7
#> 3 3.0 1.7 0.0 1.7
#> 4 4.2 2.9 1.2 0.0

Created on 2018-07-28 by the reprex package (v0.2.0).

みたいになるわけです。気を付けよう。

また、これはファイルを入力する場合に限らないですが、画像はuploadされてしまいます。
先のコードにplot(g)と入れると、下記のファイルへのリンクが出力されます。

https://i.imgur.com/5C6PtcX.png%29

なので、外に出してはいけないデータでreprex()するのは控えたほうが良いですね。問題を再現できる最低限のコードと疑似データで実行する必要があるということですね。こちらも気を付けよう。

Enjoy!!

(R) Contributorになりたい

と書くと格好良いけど…

typoとか、Helpの間違いっぽいもの、変な挙動を見つけたときに報告くらいは出来るようにしておきたいなぁ、と思っていまして1

で、探していたら、

Contribute to the tidyverse - Tidyverse

を見つけて。別にすぐさまコード書いてPR出す必要はないぽいですね。直すべきって思われてから初めてコードを書く必要があるので、いきなり書く必要はないのだ、ということでした。まぁそのほうがこっちもありがたいかな…。

大切なのはバグが「再現可能」であることが大事なようです。報告からバグフィクスにすぐに手を付ける場合もあれば、数か月先になることもあるので、どのような環境で起こるのかがわかるのは大事、ですね。

そしてこれに関連したid:yutannihilationさんとid:u_riboさんの投稿を読んで、reprexパッケージ大事だな…というか実行結果は勝手にコピーされるんですね。知らなかった…。

notchained.hatenablog.com

uribo.hatenablog.com

パッケージによってガイドラインは違うようですね。Code of Conductとかも書かれているものは目を通しておくとよいのかな。

いつか来るその日に、備えよう…。

Enjoy!!


  1. 英語力の問題はいったん置いておくこととする。

(R) remotesパッケージ(メモ)

最近、他のパッケージのインストール方法として見ることが多くなった気がしませんか?

そうでもないですかね?

CRANにもある

CRAN - Package remotes

GitHub版はこちら。 github.com

説明には

Download and install R packages stored in GitHub, BitBucket, or plain subversion or git repositories. This package is a lightweight replacement of the install_* functions in devtools. Indeed most of the code was copied over from devtools.

とあるように、devtoolsパッケージから切り出した形のようです(が、devtoolsの方がなくなったわけではない)

ちょっと確かめてみると、

identical(remotes::install_github, devtools::install_github)
#> [1] FALSE

となります。あれ…?

先日のdiffobjパッケージを使って比較してみましょうか。

ibrary(remotes)
diffobj::diffObj(remotes::install_github, devtools::install_github)

結果は

f:id:niszet:20180728205333p:plain となり、微妙に差異がありますね。

devtoolsの方からなくなることはないとは思いますが(remotesの方に全て機能を移し替えたらwrapperとして動く可能性はある)、単にリポジトリからインストールするだけの目的であればremotesパッケージだけ入れる、というのもありかもしれませんね(devtoolsパッケージはそれなりに重いので)

Enjoy!!

(R) browseVignettes() を使えばパッケージ名だけでVignettesが見れる…

知らなかった…。

普通に知らなかった…。vignette() って関数あるけど、vignette名がわからないと見れないじゃないですかーヤダーとか思っていました。

R: List Vignettes in an HTML Browser

たとえば

browseVignettes("dplyr")

と打てば、ブラウザが立ち上がって

f:id:niszet:20180724234007p:plain

のように見ることができます。大変便利ですね。

Vignettes、動くサンプルとして(たまに更新抜けてて動かないこともあるが)非常に良い勉強材料なので、是非見ていきましょう。

Enjoy!!

(R) Rにも予約語があったんですよね…。

すっかり存在を忘れていた。

みなさんは、コンソール上で

help(function)

と書いてヘルプが出せない…!?と思ったことってないでしょうか?ないかな…

こうすれば見れます。基本的にRは`をつければなんとかなるということを覚えておくと役に立つことがあるかも。

help(`function`)

で、これをツイッタで呟いていたらホクソエム親分から、

と。おぉ。すっかり存在を忘れていた予約語…。Rにもあったのか…

予約語 | R プログラミング解説

パンダ本4章読み直して、理解が深まったらまた書きます。

なぜか長らく投稿してなかった(原稿書いたまま寝てた[^1])のですが、放出! [^1]:たぶん、パンダ本を読み返せてないから。。。

Rの基本的な文法、調べようと思うと結構難しい(情報が少ない、あるいはバージョンアップで変わったもの、そもそも難解な仕様がある、など)のですよね。時間をとって基礎からみっちりやりたい…

Enjoy!!