R

Rスクリプトの実行パスを取得する

R

やりたいこと Rスクリプトでスクリプトファイルが存在しているパスを取得したい。 pythonでいうとこの__file__を実現したい。 もうちょい踏み込んだ説明 なんでかっていうと、コマンドラインインターフェースだけ独立させて存在させたいわけですよ。 私、分…

プリキュアとセーラームーンはどちらの方がサザエさんに近いのか?

この記事ではこんなことを書くよ テキストマイニング的に次元削減とプロットする話 t-SNEとかいうイケてる名前のアルゴリズム プリキュアとセーラームーンはどっちの方がいいか はじめに 計算機分野に所属する人たちは時々、本当に間抜けなことを真面目に取…

ggplot2で日本語入りのグラフが入ったhtmlレポートメールをサーバーから送る

R

やりたいこと ggplot2で日本語を利用できるようにする 前提 サーバーでRを実行している レポートhtmlを作成している レポートのグラフ中に日本語が含まれる ggplot2ではデフォルトの設定では日本語はサポートされていないので、フォントの指定が必要。 でも…

Arulesを使う上で、つまったところ

R

やりたいこと データに対して、連関規則を見つけたい。 いわゆる、「バスケット分析」や「アソシエーション分析」を行ないたい。 RではArulesパッケージが用意されているので、簡単に活用できる(はずなんだけどなあ) arulesの使い方はここやここなど、とっ…

Rmdでhtmlを作成するときに、表を罫線で囲む

R

やりたいこと Rmdで生成しているhtml内にテーブルがあって、xtableを使用して表を表示している。 で、この表を罫線で囲みたい。 解決法 xtableを使うチャンク内で下の記述を入れる。コピペでおk。 しかも、最初にxtableをprintしてるチャンク内に記述すれば…

他のファイルに定義された関数を「明示的に」読み込む

R

やりたいこと 自分で他ファイルに定義した関数を読み込む時に、きちんと読み込み元を明示する。 Rでは他のファイルに定義された関数を呼ぶときは、source(ファイル名)と記述するが、多くのファイルを読み込み始めると、どの関数がどこで定義されたのか?わか…

その関数、本当に意図してる関数ですか?

R

Rはオブジェクト指向の言語ではない。従って、呼び出している関数が、どのクラスのメソッドなのか?を意識してなくともコードが書ける。 しかし、それがために、思わぬ事態を招くことがある。 今回はそんなバッドな事例を紹介しようと思う。 現象 crontabに…

dplyrはsummariseの中で同じ変数を指定してはいけない

R

ハマりポイント dplyrのsummarise関数を使って、集計処理をしたい。 具体的には、グループ化して、条件に合うベクトルの長さを取得したい。 input_df %.% dplyr::group_by(グループ化変数) %.% dplyr::summarise(length(集計したい変数)) しかし、実行してみ…

月曜日の日付を特定する

R

やりたいこと 月曜日の日付を特定する。 ソシャゲで週ごとのイベントの数値集計したいときに重宝する機能である。 解決法 日付をunix timeに変換してから割り算をする。 割り算のあまりで「月曜日が何日前か?」を判断して、引き算を行う。 コードは以下 Det…

Rでデータフレームから特定の列を削除したい

R

やりたいこと データフレームから特定の列だけを削除したい。 でも、列の指定はインデックスじゃなくて、列名で指定したい。 解決策 setdiff関数を使う。 書式 df[setdiff(colnames(df), "除外したい列名")] ※ こっちでもOK。というか、こっちの方が書式的に…

Rのエスケープ文字はダブルのエスケープ

R

URLの文字分割したい時など、?とかの特殊記号が登場する。 しかし、単純に?でstrsplit関数を使うと、文字が全部分解されてしまう。Fu*k これは?がメタ文字として扱われているためで、?を文字として扱って分割するにはエスケープを2つもつけないといけない。…

foreachとldplyを使ってforループの記述から脱却しよう

R

例えば、ある関数をforループで毎回呼び出して処理させている時は、foreachとldplyに置き換えられる。 一般に、後者の方が処理速度が早いらしい。 ま、そんな言語設計してる時点でどうかしてると思うがな! GetSum <- function(a){ x <- a + 1 + 2 return_df …

R5クラスを利用してクラスを実装する

R

Rでクラスを実装するには3つの方法がある。 S3オブジェクト S4オブジェクト R5オブジェクト 世に出回っている多くのクラスはS3で実装されているようだが(自分の見た限りだと)、S3は「インスタンス生成時に型エラーを出さない」という致命的な欠陥がある。…

「データフレームの時間列を文字列分解して、日付と時間にして、それぞれ別の列にして追加したい。でも、strsplit関数を使うとリストで返ってきて困る」 時の対処法

R

解決策 sapplyと自作関数の併用で乗り切る いまこんなデータがあるとする > print(head(ex_data)) date_jst ID 1 2014-05-11 00:00:04 17220 2 2014-05-11 00:00:05 25377 3 2014-05-11 00:00:05 21841 4 2014-05-11 00:00:06 23536 5 2014-05-11 00:00:07 1…

POSIXct型で時間の比較演算

R

ログデータを扱っていると、時間で比較を行いたいケースが出てくる。 例えば、「〜月〜日の〜時より前のログだけ抽出」とか。 そんな時に、時間の比較演算をしてくれるのが、POSIXct型。 詳しくはwikiにゆずるとして、使い方だけ。 split_time_tmp <- "06:00…

Twitteのデータを取得しよう

R

ある日、「RでTwitterのデータを扱えるんかな?」とふと思い立った。 で、調べてみると、できるらしい。っていうかやっている人がけっこういるらしい。 これとかこれとか。 仕組みはほとんどわかってないのだが、Twitter連携アプリとして認証させていまい、t…

xargsを使ってお手軽に分散処理をしよう!

複数のパラメータがあって、どのパラメータの組み合わせがいいのか?調べたい。でも多重for文を使うと大変なことに(ただでさえRのforはク・・) →bashコマンドのxargsを併用して、お手軽に分散処理をする。 参考にしたサイト:ここ 用意するもの 1 パラメ…

WebブラウザでIpythonを使おう!(Rstudioのpython版)

なんとIpythonにwebインターフェースが存在するんだそうな。 そんなにメリットがあるとも思えないが、とりあえず使ってみたい! そんな思いからまたサーバーでIpythonを稼働させてみることにした。 使うサーバーは恒例のAmazon EC2。 まずはここを参考にしつ…

複数の学習データから行う回帰分析

R

世の中,案外データは揃わないものである. 研究室にいた頃は「学習データが足りないのが悪いんや」とか言っていたが,そうそう都合よくデータは揃わないものである. さて,いま,重回帰を行ないたいとしよう. ただし,ここからが重要だが,つぎはぎの系列…

ggplotできれいなグラフを描こう

R

グラフを描くときにどうするか? 何らかのデータを扱う者にとっては共通の悩みだろう. 自分の場合,面倒なときはデータをexcelに落としこんでから簡単にグラフを描いてしまうことが多い. しかし,次のような場合はどうだろう? Rがサーバーで稼働していて…

Amazon ec2でRの実行環境を整える

R

前回の記事では、Amazon EC2でのサーバーの立て方と初期設定の方法とか紹介した。 そのあとやることは、もうRの設定である。 「apt-getでRのインストールして、RstudioのGUIコンソールでも準備しようかなあ」と思っていたら、そんなことをしなくとももっと簡…

Amazon ec2で快適実験生活

社会人になって1ヶ月が経った。 新人研修も終わり、実際の業務に関わりはじめたわけであるが、、、ここで最大の難関が行く手を阻む。それは、「R」だ。 正直に言うと、Rは学部の頃に卒業研究のために統計をちょっと取る程度に使い、それからはほとんど触って…

時系列データの解析

R

自然言語処理の世界では「時系列データ」というと,HMMモデルのようなイメージがある(主観).品詞が隠れ状態で,単語が観測状態になっており,文中の単語のインデックスと共に「時間が経過していく」という格好だ.ただ,一般的に「時系列データ」というと…

主成分分析をきちっと理解する〜Rをうまく使う〜

まず、はじめてわかったことがひとつ。 それは主成分分析といってもやり方がふたつあるということ。ひとつは相関係数行列を用いるやり方。 もうひとつは分散共分散行列を用いるやり方。Rでは主成分分析用の関数にprincompが用意されているが、princompのcor…

RでMecab使えるようにした

R

LSIのコードを走らせてみたかったので、Mecabを入れることにした。 http://d.hatena.ne.jp/a_bicky/20120324/1332591498 (本当に参考になる) RにはRMeCabというインターフェースが用意されているので、これまた助かる。ちょっとだけ手間取ったのが、Rでの…

Rのデータ構造ってすごく多かった

R

何にもわかってないままに始めたので最初のうちはよかったんだけど、後半になるにつれて「ん、何かおかしいぞ?」ということがたびたび出て来た。というのも、Rのデータ構造の基本はすべてベクトル構造になっていたからであった。 だから、1と入力したつもり…

Rの分布関数命名規則

R

いままで知らなかったけど、命名規則ってのがあるみたいで。http://www.okada.jp.org/RWiki/?R%A4%CB%A4%AA%A4%B1%A4%EB%B3%CE%CE%A8%CA%AC%C9%DBそもそもRの基礎操作は http://takenaka-akio.org/doc/r_auto/chapter_05.html行列操作に関して参考になったの…