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

ネチネチと「戦略的データマイニング」のあら探しをする

R

著者の方から「戦略的データマイニング」という本をいただきました!ありがとうございます! という記事を先日書きました。 2014-08-22 - 盆栽日記 せっかくなのでネチネチあら探しをします。慈悲はない。 なお、あくまで初版についてのあら探しであることに…

本をいただきました

R

著者の方々より本をいただきました。ありがとうございます。 ドキュメント・プレゼンテーション生成 「ドキュメント・プレゼンテーション生成」はもう2ヶ月も前の出版なので多くの方がお持ちでしょうか。 下記はサポートページからの引用です。 データの分…

混迷をきわめるpipe界隈

現在、Rにおけるpipe演算子界隈(%>%とかそういうの)については、dplyrパッケージの勢いに後押しされたmagrittrパッケージが一見その主流になっているようにみえますが、そこに思わぬ伏兵pipeRパッケージがあらわれ事態は混迷をきわめてきました。 pipeRは%…

副作用を許しながらもchainしていく

集計結果を途中でプロットしながらもその結果はオブジェクトに保存しておきたい、 例えば以下のようなケースです。 library(dplyr) > iris %>% group_by(Species) %>% summarise(avg=mean(Sepal.Length)) -> res > plot(res) #plot結果は省略 そんな時はmagr…

:=でコードをシンプルにする

下記のようにグループ化して求めた統計量を元のデータに付加することは多々あると思います。 library(dplyr) iris <- iris %>% group_by(Species) %>% mutate(Sp.mean=mean(Sepal.Length)) しかし、ここでirisを2回も書くのは冗長なのでシンプルにしたい。 …

rlistパッケージはリストのデータハンドリングに便利

R

大抵データフレームで扱うのだが、JSONのデータを読み込む際などリストで扱わざるを得ない時がある。 で、リストのデータハンドリングをよしなにやってくれるrlistというパッケージがある。 http://renkun.me/r/2014/06/26/rlist-a-new-package-for-working-…

freadでzipファイルを読み込む

data.tableのfreadは読み込みがめちゃ速いがzipをそのまま読み込んでくれない。 > fread("C:/Users/hoge/iris.zip") Error in fread("C:/Users/h1030/iris.zip") : embedded nul in string: '$Qcーゥエネ?e轄I7!H\036ヲ+1ォ:粐*=\026\035mス岻Iンキ弌GS?T)レ\xe4\001ェR…

YOするパッケージを作りました

YOするパッケージを作りました。 R用とjulia用とあります。 長い計算をやった後のプッシュ通知などにどうぞ。 API tokenの取得は下記から。 http://yoapi.justyo.co/ # Rの場合 library(devtools) install_github("dichika/yo") library(yo) # フォロワー全…

magrittrの代入演算子

R

=とか-=といった代入演算子が他の言語にはあるわけですがRにはない。 ですがmagrittrパッケージの:=を使うことで実現できます。 devtools::install_github("smbache/magrittr") a=1 a:=add(1) a:=subtract(1)

パッケージを作る

先日のJuliaTokyo#1のこの発表資料がわかりやすいので読むと吉。 http://www.slideshare.net/KentaSato/julia-36649709 ↑の方のパッケージ(juliaのランダムフォレスト)は実際にコードを書く上で参考になる。 https://github.com/bicycle1885/RandomForests…

"親切なおじさんありがとう" %->% res

先日のワガママな悩みを親切なおじさんが解決してくれました。素敵ですね! https://github.com/smbache/magrittr/pull/23いずれ取り込まれるとは思いますがすぐに使いたい私は以下のようにしたのでした。 library(devtools) install_github("teramonagi/mag…

chainしながらもオブジェクトを残したい

R

%>%連発しながらもオブジェクトは残したい、そんなことあると思います。 以下のような感じでやりたいわけです。しかしこれはエラーになる。 iris %>% group_by(Species) %>% summarise(mn=mean(Sepal.Length)) -> res %>% qplot(data=.,x=Species,y=mn,geom=…

rbind.fillの機能はrbind_listに含まれている

R

plyrパッケージにrbind.fillという関数がある。 データフレームをrbindする時、通常は列名が一致してないとエラーが出るのだが rbind.fillは一致していない列をNAで補完して結合してくれる。 で、dplyrパッケージの場合、rbind_all、rbind_listにその機能が…

Rで左から右に書く

R

chain operator %>% の導入により左から右にコードが流れるようになった。 assignment operatorは別にでもいい。 ということは以下のように書ける。 視認性の問題もあるので長いコードや人と共有するコードを全部これで書くかどうかという話はあるが、 短い…

dplyrでdata.tableがdata.frameに変換されてしまう件

こういう話がある。datatableどうしをinner_joinしたらdataframeになって爆死したんだけど, なんでかなこれ— はたむ (@gg_hatano) 2014, 6月 23確かめてみる。 dt1 <- data.table(A = letters[1:10], X = 1:10, key = "A") dt2 <- data.table(A = letters[5:…

全角カッコの中にある全角数字を半角にして取り出したい

R

以下のような文字列があった時に1を1として取り出し、他はNAとしたい。 smp <- c("新しいファイル(1)","嫁") library(magrittr) library(Nippon) library(stringr) smp %>% zen2han() %>% str_extract("(\\d)") %>% str_replace_all("(|)","")

Rからawkを使う

R awk

ちょっと何を言ってるのかわからないと思うけどメモ。 Kmiscパッケージで使える。 awkという名前ではないawk(gawkとかmawkとか)を使っている場合はawk.setでそれを指定しておく。 library(Kmisc) dat <- data.frame( x=1:10, y=letters[1:10], z=LETTERS[1…

ハーバードの因果推論の教科書の目次をメモ

ハーバードの人たちが因果推論の教科書を書いてドラフトを公開している。 http://www.hsph.harvard.edu/miguel-hernan/causal-inference-book/ とりあえず現段階の全容を把握したいので目次をメモ。 I Causal inference without models 1 1 A definition of c…

dplyrのバージョンが0.2に上がって

dplyrのバージョンが2.0に上がって少し便利になりました。 詳しくは以下のリリースノートをご覧ください。 https://github.com/hadley/dplyr/releases/tag/v0.2.0 以下の3点が大きな変更点。 %.%が%>%に変わった do()が生まれ変わった 新しい便利関数が加わ…

geom_pathで矢印を書く

geom_pathはめったに使わないので矢印が書けるとは知らなかった。 library(ggplot2) smp <- data.frame(id=rep(1:5,each=2), group=rep(2008:2009,5), x=rnorm(10), y=rnorm(10)) library(grid) ggplot(smp, aes(x=x,y=y,group=id,label=group)) + geom_path…

Rで一行でディープラーニング

R

ディープラーニング、Rで deeplearning(y~., data) とかいう感じで一行で書けたらなあと思ったことありませんか、私は常々思っていました。 だが実装するのはめんどい。 というころで探したらありました。 まあRで実装されているわけではなく、h2oというオー…

メッセージを英語化

R

ググったり、MLに投稿する時日本語だと困るのでメッセージを英語化したい。 Sys.setlocale("LC_CTYPE","English")

RMySQLをWindows7にインストールする

R

作者によるとバイナリ配布めんどいということで、ソースからインストールする必要がある。 原則として下記の指示に従えば良い。 http://biostat.mc.vanderbilt.edu/wiki/Main/RMySQL 1. Rtoolsのインストール 下記から対応するものをインストール。 http://c…

reshape2で横を縦に変換したいがidは無い時はNULL

R

idとなるような変数は無く、ただ単に横持ちのデータ(wide)を縦持ちのデータ(long)に変換したい時は、id.varsにNULLを指定する。 > smp <- data.frame(A=1,B=2,C=3) > smp A B C 1 1 2 3 > reshape2::melt(smp, id.vars=NULL) variable value 1 A 1 2 B 2…

nochangeでお願いします

sqlFetchを使う際、大文字で指定したテーブル名が勝手に小文字に変換される。 sqlFetchの引数を見てもそんな指定はない。 困ったと思いヘルプをつらつら見ているとodbcConnectにそのような指定があることに気づいた。 とりいそぎcase="nochange"に指定した次…

Rでぐにゃぐにゃしたプロットを描く

不真面目な話にかっちりとしたプロットは似合わない。 相応のプロットを描きたい。Rで描きたい。 xkcdパッケージで大体のところは描ける。 通常、折れ線グラフはxkcdline関数で描けるのだが定義域の変化に合わせて関数が変わるような場合には対応していなさ…

dplyrとPostgreSQLではまったポイント

dplyrをPostgreSQLから叩いてはまったポイントをつらつらと書きます。 カラム名(フィールド)を大文字で書かない DB扱う人にとっては当然の話だとは思いますがカラム名は小文字でないとエラーが出る場合があります。 大文字使っている時はエスケープしてお…

githubとRStudioを使って最速でパッケージを全世界に大公開

R

ベストプラクティスよくわからないのでとりあえずの手順をメモしておく。 パッケージをgithubに公開する 前提としてgithubのアカウント取得及びgitのインストールなどは済んでいるものとする。 githubで作りたいパッケージ名のレポジトリを作成する。この際…

window functionまとめ

R

dplyrやRcppRollに実装されているwindow functionはうまく使えば便利です。 ということで以下にまとめました。 実例は下記をご覧ください。 http://cran.r-project.org/web/packages/dplyr/vignettes/window-functions.html原則としてdplyrに入っているもの…

slideshareからスライドショーを作れるようにしました

R

勉強会のまとめを作るのが非常にめんどくさいのでslideshareからタグでひっぱってきてまとめてスライドショーにできるようにしました。 slideshareパッケージのcreateSlideshowByTagを使うとこんな感じになります(表紙はちょっと違うけど)。 http://dl.dro…