J's blog

趣味で統計•データ解析をしています

R

foreachでprogressbarを表示する

R

最近、pforeachという簡単に並列処理を行うパッケージが僕の中で話題です。とても便利です。 R で超簡単に並列処理を書けるパッケージ pforeach を作った - ほくそ笑む ただpforeachを使って並列化できるのは良いのですが、並列処理だと普通にやってもprogre…

LC_ALL=Cでsortを高速に

bashのsortがLC_ALL=Cにすると速くなるという記事を見つけました(割と有名なようで)。 追記: sort を使うときは,LC_ALL=C を忘れずに - ny23の日記 LC_ALL環境変数とsortコマンド - sileのブログ データ集計コマンドを極めてシステム処理と業務速度を爆速…

foreachについてまとめたい

R

foreachパッケージのforeach関数についてです。 Rで並列処理を行う際に今まで使用してきましたが、引数は.combineをいじるくらいでした。他にも%dopar%とかよくわからないものを蔑ろにしていました。この関数は今後もよく使うことになりそうなので、頑張って…

MacでRを複数起動する

R

別にRに限った話ではないのですが、GUIのRを複数起動したいと思ったのでその方法です。 実はすごく簡単で、ターミナルで以下のコマンドを実行するだけで別プロセスでGUIのRが出てきます。 open -n /Applications/R.app RStudioを複数起動したいならRStudio.a…

Rで(逆)ジオコーディング

今回はGoogle Geocoding APIを利用して、住所から緯度経度(及びその逆)を求めたいと思います。 APIについて Google Geocoding APIはGoogleの提供するAPIで、1日2500件までリクエストが可能です。リクエストにはいくつか形式を選択する必要があります。 必…

RでChangeFinder

変化点検出のアルゴリズムとして、ChangeFinderという有名なアルゴリズムがあります。Rによる実装例が見つからなかったので実装しました。今回は1次元のデータに対する変化点検出を考えます。アルゴリズムの詳細は記述しませんので、後述の参考群を参照して…

Rで単純パーセプトロンを組んでみた

SVMを実装するにあたって「まずパーセプトロンを組んでみては?」と先輩からアドバイスを頂いたので、実装してみた。パーセプトロンに関するまとめ付き。 機械学習としてのパーセプトロン 機械学習は、大きく3種類に分けて考えることができる。*1 識別関数 …

確率分布をRで描いた

R

基本的な確率分布をRで描いてみた。 二項分布 plot(dbinom(1:50, 10, 0.7), type="o", xlab="x", ylab="probability", main="Binomial distribution") for(i in 2:5) { points(dbinom(1:50, i*10, 0.7), col=i) lines(dbinom(1:50, i*10, 0.7), col=i) } gri…

fread(data.table 1.9.2)の引数sep2が使えない

R

これは本当に題意のとおりで、割とつまづいたのでメモ。まずfread関数とは、高速にデータテーブルを読み込んでくれる data.tableパッケージの関数のことです。 区切り文字などを指定しなくても自動で対応したり、列選択ができるなど、 高速さ以外にも便利だ…

RでLPを解く

R

RでもLP程度なら「不等式制約付き最適化問題」であっても 数値計算で求められることがわかりました。 用いる関数は、optim()のラッパー関数であるconstrOptim()を使います。 例えば、以下のような(最大化)LPを考えます。目的関数: 制約条件: (解答は, のとき…

軸の目盛りを文字列にする

R

plotの軸の目盛りをいじりたい。しかしどうすれば...? そんなときはaxisを使います。例えば以下です。 axis(side=1, at=1:10, labels=letters[1:10]) これなら、x軸の1から10番目の目盛りがa~jになります。 こんな感じに部分的にも使えます。 plot(trees$Vo…

catによる出力を非表示にする

R

とりあえずinvisibleを使ってみるとこうなります。 > invisible(cat("I want to suppress output in R.")) I want to suppress output in R. > # 失敗 ちなみにsuppressMessagesを使ってもダメでした。 invisible関数で非表示にできるのは、オブジェクトであ…

Rのプロキシ設定(Mac用)

R

研究室などのプロキシ環境下において、ネットワークに接続することができないことがあります。 そういう時は.Rprofileなどに以下のコードを入れておきましょう。 Sys.setenv("http_proxy"="http://proxy.hogehoge.jp:hogehoge2") # hogehoge = host # hogeho…

manipulate関数によるインタラクティブな描画

R

メモランダム. RStudio導入時におそらく自動でインストールされている(?),manipulateパッケージのmanipulate関数を使用することでインタラクティブな図が描ける.使い方はここ→http://www.rstudio.com/ide/docs/advanced/manipulateを見ればよ〜〜くわか…

R起動時にpackageを自動ロードする

R

よく使うパッケージを起動のたびにlibrary()やrequire()をするのは面倒かと思います。その時は.Rprofile内に suppressMessages(library(hoge)) の一文を入れておきましょう。(違いました。追記を見て下さい。)suppressMessages()はなくても構いませんが、出…

永続代入(スーパーアサインメント)演算子

R

Rのお話です。 永続代入演算子( これを「グローバル変数への代入演算子」と勘違いして覚えてしまうような扱いをよく見る気がします。それでも基本困ることはないと思いますが、ここで正しい意味を覚えてしまいましょう。 説明 下の実行結果を見てください。 …

Rの関数の中身を知りたい

R

Rの関数の中身を知りたい時のお話です。 基本的には、 > 関数名 としてしまえば下のmatrix関数のように参照することができます。 > matrix function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) { if (is.object(data) || !is.atomic(…

NAを含む時のdist関数

R

Rのdist関数において、対象とするベクトル内にNAが含まれている場合を調べました。 初めはNAで返ってくるのか考えていましたが、どうやらNAがあっても数値として計算して返してくれるようです。 計算過程がわかりやすいようにmanhattan距離で計算してみまし…