No.22390 R ファイル出力  【明石】 2017/06/10(Sat) 20:46

青木先生,
いつもお世話になり,ありがとうございます,明石と申します。

先日の質問「R ベクトルの計算」では,大変にお世話になり,ありがとうございました。

また,Rについて,お聞きしたいことがでてきました。
ご教示をいただければ,大変に助かります。
何卒どうぞよろしくお願いいたします。

-----------

テキストマイニングのRパッケージを複数利用しています。
どのパッケージでも同じ問題にぶつかっており苦慮しています。

以下,パッケージ"textmineR"のマニュアルに掲載されている例題を例にとり,やりたいことをご説明します。
library(textmineR)

data("nih_sample")

# Convert a character vector to a document term matrix

dtm <- CreateDtm(doc_vec = nih_sample$ABSTRACT_TEXT,
doc_names = nih_sample$APPLICATION_ID,
ngram_window = c(1,1))

> class(dtm)
[1] "dgCMatrix"
attr(,"package")
[1] "Matrix"

> dim(dtm)
[1] 100 5210
document term matrix は,行方向は文書名,列方向は単語名からなる,行列です。

この計算結果では,100行*5210列のサイズをもつという情報が表示されています。

この行列をcsvファイル出力したいと考えています。

私が使う(知る)ファイル出力は write.csv ですので,それを使うと。
> write.csv(dtm, "dtm.csv")
as.data.frame.default(x[[i]], optional = TRUE) でエラー:
cannot coerce class "structure("dgCMatrix", package = "Matrix")" to a data.frame
>
行列なのでcsv出力できると思っていましたが,できません。

データ構造は,以下のようになっています。
> str(dtm)
Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
..@ i : int [1:14073] 99 99 99 99 99 99 99 99 99 99 ...
..@ p : int [1:5211] 0 1 2 3 4 5 6 7 8 9 ...
..@ Dim : int [1:2] 100 5210
..@ Dimnames:List of 2
.. ..$ : chr [1:100] "8693991" "8693362" "8607498" "8697008" ...
.. ..$ : chr [1:5210] "consumer" "attempt" "voucher" "allocated" ...
..@ x : num [1:14073] 1 1 1 1 1 1 1 1 1 1 ...
..@ factors : list()
この dtm の,100行*5210列の行列をcsvファイル出力できる方法について,ご教示いただけましたら助かります。

どうぞ,よろしくお願いいたします。

No.22391 Re: R ファイル出力  【青木繁伸】 2017/06/11(Sun) 08:06

"R dgCMatrix write" で検索すると
https://stackoverflow.com/questions/4558277/write-a-sparse-matrix-to-a-csv-in-r
なんかが出てきて,
as.matrix で行列にできる(as.matrix(dtm) とする)というのが書かれているけど,
それは資源の無駄遣いなので writeMM を使うべき(?)とかも書かれています
https://stackoverflow.com/questions/17574099/in-r-how-do-you-write-a-sparse-matrix-to-a-file
には writeMM と readMM について書かれている。
その他のページも見てください。

No.22392 Re: R ファイル出力  【明石】 2017/06/11(Sun) 10:46

青木先生,
いつもお世話になり,ありがとうございます,明石と申します。

いつもありがたいご教示をいただきまして,誠にありがとうございます。

助かりました。

さっそく勉強させていただきます。
ありがとうございました。

● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る