フォントを考える

特にプログラミングするとき,フォントって気になりません?
特にWindowsWin7環境だとほっといたらMSゴシックでしょう.あれ嫌いなんですよ.
2バイトと1バイト文字混在させるとカーソル位置が合わなくなって変な感じになりません?

メイリオをモノタイプ化してくれるもの*1もありますけど,ここでは源ノ角ゴシックのは製品をおすすめしたい.
詳細は
https://ja.wikipedia.org/wiki/Source_Han_Sans
を参照.

MacのRStudioではGen-ei GothicRMをつかっていて,WindowsのそれではGen-shinGothicRMをつかってる.
Macスプレッドシートいじろうとは思わないんだけど,Windowsでアイデアが出てくるとは思えないという面倒くさいわたしに多様な選択肢を与えてくれる源ノ角フォント派生形のこれらのフォントは非常にいい感じ.

*1:www.geocities.jp/meir000/meiryoKe/

Macでフォルダパスを表示したい

Macクリーンインストールして,ファイルとかの移動はおおかた終わったんだけど,細かい設定が気づいたときに発生する.
パスバーの表示でもいいじゃないかと思うかもしれないが,やっぱりFinder上でフォルダパスを確認したい.

Finder上でフォルダパスを表示する*1には,ターミナルを開いて
defaults write com.apple.finder _FXShowPosixPathInTitle -boolean true
として
killall Finder
でFinderを再起動.

元に戻すには,
defaults delete com.apple.finder _FXShowPosixPathInTitle
でFinderの再起動
killall Finder

不可視フォルダを表示させるには*2
defaults write com.apple.finder AppleShowAllFiles -boolean true
としてFinderを再起動する.
killall Finder
元に戻すには
defaults delete com.apple.finder AppleShowAllFiles

killall Finder
をすればよい.

この辺の話は
http://inforati.jp/apple/mac-tips-techniques/system-hints/
にお世話になった.
借文オンパレードだが,MBPがでたときに移行するときの自分メモなのだ.

それと,Cmd+Shift+Gでパスの直接入力もできるが,MacなのにそんなWindows的な方法じゃないとだめなの?って思うとき,
FinderPathをインストールすればよい.
https://bahoom.com/finderpath/

カブっているのはどいつだ!?

次につなげるというより,何が悪いんだろうと評価する場合の話.
dplyr使って,データから重複を除きたいときはunique()とかdistinct()とかで取り除ける.
逆の話ってあんまりないよね.重複しているデータセットを知りたい.
普通だったらduplicateとか使うんだろうけど,使い方がよくわからないのでこうやった.

> require(dplyr)
> # 適当なデータセットを作る
> cbind(flag=paste(rep("A",4),1:4, sep=""), data.frame(matrix((runif(4*5)),nrow=4))) %>%
+   # tbl_df形式に変換(趣味の問題)
+   tbl_df() %>% 
+   # あえてダブらせるために元データから3個サンプリングしてくっつける
+   bind_rows(.,sample_n(.,size = 3)) %>% 
+   arrange(flag) %>% 
+   # グループ化して
+   group_by(flag) %>%
+   # 数を数えてなにがダブってたか表示する
+   filter(n()>1)
Source: local data frame [6 x 6]
Groups: flag [3]

    flag         X1        X2        X3        X4        X5
  <fctr>      <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
1     A1 0.29190067 0.9188347 0.4091478 0.4894116 0.9184717
2     A1 0.29190067 0.9188347 0.4091478 0.4894116 0.9184717
3     A3 0.67632804 0.9658845 0.7904995 0.2662530 0.6808312
4     A3 0.67632804 0.9658845 0.7904995 0.2662530 0.6808312
5     A4 0.08709546 0.1974051 0.1944737 0.3843282 0.9018635
6     A4 0.08709546 0.1974051 0.1944737 0.3843282 0.9018635

texで画像を表示させる

何を思い立ったか,MacのOSをSierraにした.しかもクリーンインストール
インストール時の注意点は,ダウンロードしたときご本尊が表示されるのはLaunchpadの中であること,
クリーンインストールするときに,HDDをカラにしたあとOSをインストールする前に再起動すると取り返しがつきづらいこと,
取り返すためにはインターネット経由でオリジナルのOSを入れ直す二度手間となること.
詳しくは Mac OS クリーンインストールググるとわかる.

で,いろいろと必要な物をインストールする.
TexのインストールはMacTexをインストールすりゃよくて,インストールしたあとはTeX Live Utilityでパッケージの更新をすればいいだけ.
直にlatex書くのがめんどいので愛用しているLyxを入れる.
texをLyxで書くのは,RをRstudioから使ってるのとおなじような便利さ.
おすすめ.

で,そのままではLyxでPDFを画像に変換できないのでこうやって解決した

Macportsをインストール
http://brew.sh

MacTex, LyX, X11はすでに入っている状態で,ターミナルから
brew tap homebrew/x11
brew install xpdf

あとはLyx側で環境構成してアプリケーションの再起動をすれば完了.

dplyrチェーンでスケーリングするときの注意

注意ってほどではないんだが,分析するとき,データセットを基準化(標準化,Z変換,standardization,scale)することがある.
よく使うのはScale関数なんだけど,dplyrのチェーンで使うと余計なもの(Scaled:centre/scale)がついてくるのでなんとなく気持ち悪い.
Scale関数を使ってどんな影響があるのかわからないけど,普通に(x-mean(x))/sd(x)でやったほうがよろしい様子.
ってか,そもそも関数使うって発想が古い?

> cbind(rep(1:2,10), matrix(runif(20*10),ncol=10)) %>% 
+     tbl_df() %>% 
+     rename(grp=V1) %>%
+     mutate(grp=as.factor(grp)) %>% 
+     group_by(grp) %>>%
+     # scale関数つかったとき
+     (~mutate_at(.,vars(2:11), funs(scale)) %>% ungroup() %>% str(.) %>% print(.)) %>% 
+     # (x-mean(x))/sd(x)にしたとき
+     mutate_at(.,vars(2:11), funs((.-mean(.))/sd(.))) %>% ungroup() %>% str()
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':	20 obs. of  11 variables:
 $ grp: Factor w/ 2 levels "1","2": 1 2 1 2 1 2 1 2 1 2 ...
 $ V2 : num [1:10, 1] 0.38 0.839 -1.034 0.111 0.773 ...
  ..- attr(*, "scaled:center")= num 0.634
  ..- attr(*, "scaled:scale")= num 0.23
 $ V3 : num [1:10, 1] 0.817 -0.259 -1.136 -0.384 0.474 ...
  ..- attr(*, "scaled:center")= num 0.419
  ..- attr(*, "scaled:scale")= num 0.332
 $ V4 : num [1:10, 1] 0.451 -0.611 1.129 -1.104 -1.635 ...
  ..- attr(*, "scaled:center")= num 0.586
  ..- attr(*, "scaled:scale")= num 0.317
 $ V5 : num [1:10, 1] 0.0921 1.1026 1.1408 -0.2213 -1.4277 ...
  ..- attr(*, "scaled:center")= num 0.625
  ..- attr(*, "scaled:scale")= num 0.282
 $ V6 : num [1:10, 1] 0.567 -1.311 0.123 1.352 -0.772 ...
  ..- attr(*, "scaled:center")= num 0.436
  ..- attr(*, "scaled:scale")= num 0.275
 $ V7 : num [1:10, 1] -0.737 -1.362 -0.422 1.455 -0.821 ...
  ..- attr(*, "scaled:center")= num 0.544
  ..- attr(*, "scaled:scale")= num 0.264
 $ V8 : num [1:10, 1] 0.51 -2.427 0.653 -0.282 -1.424 ...
  ..- attr(*, "scaled:center")= num 0.493
  ..- attr(*, "scaled:scale")= num 0.332
 $ V9 : num [1:10, 1] -1.185 0.296 1.019 1.344 -0.895 ...
  ..- attr(*, "scaled:center")= num 0.488
  ..- attr(*, "scaled:scale")= num 0.341
 $ V10: num [1:10, 1] -0.935 0.782 1.396 -0.314 -0.407 ...
  ..- attr(*, "scaled:center")= num 0.343
  ..- attr(*, "scaled:scale")= num 0.314
 $ V11: num [1:10, 1] 1.241 -1.37 0.263 -1.209 -0.956 ...
  ..- attr(*, "scaled:center")= num 0.444
  ..- attr(*, "scaled:scale")= num 0.248
NULL
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':	20 obs. of  11 variables:
 $ grp: Factor w/ 2 levels "1","2": 1 2 1 2 1 2 1 2 1 2 ...
 $ V2 : num  0.38 0.839 -1.034 0.111 0.773 ...
 $ V3 : num  0.817 -0.259 -1.136 -0.384 0.474 ...
 $ V4 : num  0.451 -0.611 1.129 -1.104 -1.635 ...
 $ V5 : num  0.0921 1.1026 1.1408 -0.2213 -1.4277 ...
 $ V6 : num  0.567 -1.311 0.123 1.352 -0.772 ...
 $ V7 : num  -0.737 -1.362 -0.422 1.455 -0.821 ...
 $ V8 : num  0.51 -2.427 0.653 -0.282 -1.424 ...
 $ V9 : num  -1.185 0.296 1.019 1.344 -0.895 ...
 $ V10: num  -0.935 0.782 1.396 -0.314 -0.407 ...
 $ V11: num  1.241 -1.37 0.263 -1.209 -0.956 ...

WindowsUpdateがまたしても私のバッテリーを貪る件

9月のWindows Updateが配信されたようである.
出先でWindowsPCでプログラミングしていたら,ガンガンバッテリーが減っていく.
並列計算してたからしょうがないかとおもいつつ,計算が終わってもCPU使用率は高いまま.
これは,と思いだしググってみると,9月WindowsUpdate更新版に問題があるようだ.

一部のUpdateファイルを先に入れるといけるとかいうけど,なんでそんな面倒くさいことしないといけないの?
作業領域というか画面解像度でWinを使ってるにすぎない私は,さっさとMacbook Proの新しいヤツが出てくれることを心の底から願いつつ,
services.msc
を開いてWindowsUpdateを寝かせる.

家に帰ったらここを参考にしてみる.あるいは開きっぱなしにして時間に解決してもらうか.
http://blog.livedoor.jp/nichepcgamer/archives/1058461052.html

dplyrで行方向の足し算

dplyrでデータ加工が格段に楽になった.

selectやら*joinやらmutateやらで切った貼ったはなれれば感覚的だし,列方向の集計はsummarise_at(vars(1:10), funs(mean,sd))とかでいける.

group_byしちゃって分類ごとに集計することやRcppRollパッケージを使えば移動平均も簡単.

詳細は素晴らしい使い方サイトがあるのでここでは触れない.

ただ,以外と行方向の集計に手こずったのでメモ.

> matrix(runif(10*3),ncol=3) %>>% (~rowMeans(.)-> tmp) %>% tbl_df() %>% mutate(rmean=rowMeans(.[1:3])) %>% cbind(.,tmp) %>% mutate(diff=rmean-tmp)
          V1        V2        V3     rmean       tmp diff
1  0.9512258 0.9323834 0.3673428 0.7503173 0.7503173    0
2  0.6022213 0.4665859 0.5452625 0.5380232 0.5380232    0
3  0.9128597 0.5536906 0.7513243 0.7392916 0.7392916    0
4  0.9844938 0.7430882 0.3007915 0.6761245 0.6761245    0
5  0.1188505 0.4204854 0.2030719 0.2474693 0.2474693    0
6  0.2920467 0.8497445 0.8380774 0.6599562 0.6599562    0
7  0.2079907 0.1409728 0.2556858 0.2015498 0.2015498    0
8  0.3650271 0.2323105 0.1202650 0.2392009 0.2392009    0
9  0.3368931 0.5872122 0.5272524 0.4837859 0.4837859    0
10 0.4177050 0.6991706 0.8312461 0.6493739 0.6493739    0