トップページ -> コンピュータ実習 -> mongoDB のインストールと各種ツールの使用法 -> R 言語処理系のオブジェクトを MongoDB に格納してみる
[サイトマップへ]  

R 言語処理系のオブジェクトを MongoDB に格納してみる

サイト構成 連絡先,業績など コンピュータ実習 データの扱い コンピュータ設定 教材(公開) サポートページ

このWebページでは、 R のデータ・フレームを MongoDB に格納してみます。

前準備


必要な R パッケージのインストール

  1. R の起動

    R 
    

  2. R パッケージのインストール

    install.packages("rmongodb")
    install.packages("rjson")
    

使ってみる

データフレームの格納 (toJSON, fromJSON を使用する

2つのラッパー insertMongo, getMongo を定義し、 このラッパーを使って、データフレームの mongodb への格納と取り出しを行なってみます

ここでは、toJSON, fromJSON という2つの関数を使って JSON との変換を行なっています.

library("rmongodb")
library("rjson")

insertMongo <- function(mongo, ns, key, val) {
    if (mongo.is.connected(mongo)) {
        a <- mongo.insert(mongo, ns, list(name=key, value=toJSON(val)))
        return(a)
    }
} 
getMongo <- function(mongo, ns, key) {
    if (mongo.is.connected(mongo)) {
        x <- mongo.find.one(mongo, ns, list(name=key))
        return(fromJSON(mongo.bson.to.list(x)$value))
    }
    return(NULL) 
}

m <- mongo.create(host="127.0.0.1")
mongo.get.databases(m)
mongo.get.database.collections(m, db="hoge")
# 
insertMongo(m, "hoge.iris", "iris", iris) 
getMongo(m, "hoge.iris", "iris") 

注意点としては、 元のデータテーブルが Factor (因子) を含むとき、mongodb に格納したあと、読み込むと、Factor (因子)の部分が文字列になる.

str(getMongo(m, "hoge.iris", "iris") )
str(iris) 

(参考)データフレームの格納 (toJSON, fromJSON を使用しない

今後は、 toJSON, fromJSON を使用しないように、 2つのラッパー insertMongo, getMongo を定義してみます。

library("rmongodb")
library("rjson")

insertMongo <- function(mongo, ns, key, val) {
    if (mongo.is.connected(mongo)) {
        a <- mongo.insert(mongo, ns, list(name=key, value=val))
        return(a)
    }
} 
getMongo <- function(mongo, ns, key) {
    if (mongo.is.connected(mongo)) {
        x <- mongo.find.one(mongo, ns, list(name=key))
        return(mongo.bson.to.list(x)$value)
    }
    return(NULL) 
}

m <- mongo.create(host="127.0.0.1")
mongo.get.databases(m)
mongo.get.database.collections(m, db="hoge2")
# 
insertMongo(m, "hoge2.iris", "iris", iris) 
getMongo(m, "hoge2.iris", "iris") 

今度は、 元のデータテーブルが Factor (因子) を含むとき、mongodb に格納したあと、読み込むと、Factor (因子)の部分が数値になる.(こちらの方が不便かなという気がします)。