読者です 読者をやめる 読者になる 読者になる

R言語徹底解説を読む (1) ようこそRプログラミング

この記事が想定する読者層

もしあなたが「プログラマー」ならば、この記事はまるで不要かもしれません。

ここで言うプログラマーとは、たとえば以下のような習慣を持っている人です。

  1. ほとんど同じ処理をソースコード中に2回以上書いていたら違和感を感じる
  2. 出力結果が変わらなくても、実行速度や理解しやすさのためにソースコードを書き直すことがある
  3. Gitなどのバージョン管理システムを使うことができ、過去のソースコードを「日付の含まれたファイル名でバージョンごとに別ファイルとして保存しておけばよい」とは考えない
  4. 動作テストを自動化し、ソースコードを書き換えてもそれぞれの関数の挙動が意図したものになっているかを確認できる

この記事は、ひょんなことからRに出会い、コードをコピペで動かせるようになり、

「いつかコピペじゃないコードが書けるようになりたい」
「他のプログラミング言語もできるようになりたい」

とぼんやり思っているうちに月日が流れてしまい、漠然とした未達成感を味わいながらも何から始めたらいいのかまるでわからなかった僕のような人に読んでもらえたらと思って書きました。

......そんな人がいるのかはさておき。

それでは、挫折しないための「R言語徹底解説」通読法 で予告した、感想ブログ、はじめます。

続きを読む

挫折しないための「R言語徹底解説」通読法

 今年の2月12日、とある書籍をご恵贈いただきました。原題 "Advanced R"の日本語版、『R言語徹底解説』。全20章、索引を含めると500ページを超える重厚な訳書です。

原著者のHadley Wickham氏は{ggplot2}{dplyr}をはじめとするいくつもの強力な拡張ライブラリの作者であり、R言語に革命を起こしたと評されるなど、今やRユーザにとっては欠くことのできない存在となっています。

Advanced R (Chapman & Hall/CRC The R Series)

Advanced R (Chapman & Hall/CRC The R Series)

R言語徹底解説

R言語徹底解説

そんなHadleyの思想が凝縮されたという "Advanced R"の邦訳を喜びつつ*1も、僕にはひとつの不安がありました。

続きを読む

艦これの任務消化が楽しい人はたぶんWunderlistとか使うと捗る

前回までのあらすじ

18日前くらいに久々にブログを書いた。「なかなか時間が取れないけど進捗を出したい、進捗が欲しい」という気持ちを綴ってTwitterにブログ書いたよと報告したら、@dichika さんに『佐藤オオキのスピード仕事術』という本を薦められたので買って読んでみた。

著者はデザイナーで、なんでも400のプロジェクトを同時に進めるらしい。 400て。頭かスケジュールのどっちかパンクするだろ、と書名を見てまず思った。

続きを読む

どうすれば「進捗」を出せるのか

去年の今頃から、ずっと先延ばしにしているタスクがある。

 

そのタスクの「進捗」を出したい。

けれど、頭ではやろうと思っているのに、「通常業務が忙しくて、なかなか作業のための時間が取れない」でいた。

正確には、時間が取れないと言い訳している状態が、しばらく続いていた。

 

先月の頭に、ふと思い立って自宅を片付けていると、

『できる研究者の論文生産術(原題:How To Write a Lot)』という本が出てきた。

 

できる研究者の論文生産術 どうすれば「たくさん」書けるのか (KS科学一般書)

できる研究者の論文生産術 どうすれば「たくさん」書けるのか (KS科学一般書)

 

 

去年の夏頃に買ったままほとんど放置していたこの本に書かれていたのは、まさに「進捗を出す」ための指針だった。

続きを読む

RStudio Serverでセッションを強制的に新しくするには

RStudio Serverを使っていると、セッションが異常終了する(had abend)ことがある。

*1

30 Sep 2014 02:06:02 [rsession-wakuteka] ERROR session hadabend; LOGGED FROM: core::Error<unnamed>::rInit(const r::session::RInitInfo&) /root/rstudio/src/cpp/session/SessionMain.cpp:1694
30 Sep 2014 02:06:37 [rsession-wakuteka] ERROR session hadabend; LOGGED FROM: core::Error<unnamed>::rInit(const r::session::RInitInfo&) /root/rstudio/src/cpp/session/SessionMain.cpp:1694
30 Sep 2014 02:07:28 [rsession-wakuteka] ERROR session hadabend; LOGGED FROM: core::Error<unnamed>::rInit(const r::session::RInitInfo&) /root/rstudio/src/cpp/session/SessionMain.cpp:1694
30 Sep 2014 02:08:42 [rsession-wakuteka] ERROR session hadabend; LOGGED FROM: core::Error<unnamed>::rInit(const r::session::RInitInfo&) /root/rstudio/src/cpp/session/SessionMain.cpp:1694

これが非常に悩ましい問題で、sessionを強制終了させる方法がマニュアルを探してもよくわからない。しばらく探していたらこんなページがみつかった。


r - Fresh new session for rstudio-server - Stack Overflow

 

~/ (home)以下に.rstudioというフォルダがあるのでそれをリネームするか消しちゃえばセッションが強制的に新しくなるよ! というわけだ。

試しに.rstudio.bakという名前に変えてRStudio Serverにアクセスしてみるとセッションが新しくなっている! ~/以下にもちゃんと新しく.rstudioというフォルダができている。少し乱暴な気もするけどこういう方法もあるということでメモ。

 

種々のエラーと切り結んでいるうちに9月が終わってしまった。時の流れが速すぎる。

 

*1:

 

 エラーメッセージをそのままググるとRStudio関連しか出てこないので、hadabendというのはspaceの入れ忘れだと思う。

サーバーのload averageが高過ぎると思ったらrun levelが5だったので直した

6月に研究室で買ってもらったサーバーを計算用に使用していたのだが、つけっぱなしに していると度々動作が重くなって、ついにはpingは通るのにsshログインはできなくなるという謎の挙動を示していた。なにかCPU負荷を減らす方法はないか気にしていた折、topの結果をソートできることを知って、試してみたら計算用のプロセスの次にgnome関連のプロセスがメモリをバカ食いしていた。GNOMEといえば確かLinux環境でデスクトップ周りを実現させるための奴らだ。

 

コマンドラインで計算しかしてないサーバーに、そんなものは、いらない。

 

uptimeで確認したload averageはなんと5を超えていた。アホか。cpu8個しか無いのに。

 

Fedora 19 - ランレベルを変更する : Server World

ランレベルはここを参考にして修正した。

上のようになっていればGNOMEが余計なメモリを食うことはなくなる。

計算用のサーバーで、GUIでの使用を想定していない場合はランレベルを落としておいたほうがいい。なんで気づかなかったんだろう。

 

かねてから頭を悩ませていた問題が解決したおかげで食欲がとどまるところを知らない。

R/Bioconductorでmultifasta形式をsinglefasta形式に変換する

 

クロスプラットフォームで簡単にインストール・実行可能なスクリプトと言ったらRですよね。というわけでやってみた。

gist8050846