R で Mongo で データフレーム

実験で取扱うデータをMongoDBに統一しているのだけど、RMongoは結構ライフチェンジングだった
っていうのは今までPythonでmongodb叩いてcsvに加工してRで読んでたから。
MongoDBでも面倒な手間なくRと連携できるのは、データマイナーな皆さんには結構楽しいのではないでしょうか

RMongoは、MongoDBのBSONクエリの結果をデータフレームで返してくれる

RMongoのインストール

まず RUnitとRjavaをCRANからインストール。

次に quid/RMongo - GitHub の Download から tar.gz で落としてくる

シェルで

$ R CMD INSTALL RMongo_x.x.x.tar.gz  #version

使ってみる

適当に関数書いてラップしといた

library(RMongo)

getMongo<- function(dbname,colname,query) {
  db <- mongoDbConnect(dbname, "localhost", 27017)
  output <- dbGetQuery(db, colname ,query)
  dbDisconnect(db)
  return(output)
}

insertMongo<- function(dbname,colname,query) {
  db <- mongoDbConnect(dbname, "localhost", 27017)
  output <- dbInsertDocument(db, colname, query)
  dbDisconnect(db)
  return(output)
}

以下Kinectで撮ったデータを三次元プロットしてみたサンプル

> output <- getMongo("openni",'test1','{"pos":"HEAD"}') { 
> output
                         X_id  pos       time   y    x    z con
1    4d883fe7fd0cc62ee900004b HEAD 1300774887 739 -236 2280   1
2    4d883fe7fd0cc62ee900005a HEAD 1300774887 740 -238 2280   1
3    4d883fe7fd0cc62ee9000069 HEAD 1300774888 741 -239 2280   1
4    4d883fe7fd0cc62ee9000078 HEAD 1300774888 745 -240 2279   1
5    4d883fe7fd0cc62ee9000087 HEAD 1300774888 748 -240 2280   1
6    4d883fe7fd0cc62ee9000096 HEAD 1300774888 752 -241 2279   1
...

> library(scatterplot3d) # CRANから
> scatterplot3d(output$x , output$y , output$z)


データフレームってのが嬉しいですね!

追記

RStudioが凄いので皆さん是非使いましょう
RStudio


Mac版のキーバインドがおかしいのどこに報告したらいいのかな