をR:ドキュメント期の行列は、例えば、私は文書長期行列DTMを持って
dtm
<<DocumentTermMatrix (documents: 50, terms: 50)>>
Non-/sparse entries: 220/2497
Sparsity : 100%
Maximal term length: 7
Weighting : term frequency (tf)
今、私は、各文書を表し、行列のリストにそれを転送します。そう、一度、各行を
[[1]]
[,1] [,2] [,3] [,4]
[1,] 23 33 42 117
[2,] 2 1 3 1
[[2]]
[,1] [,2] [,3] [,4]
[1,] 2 19 93 168
[2,] 2 2 1 1
私はDTMからすべての非ゼロのエントリを見つけることを考えていますし、行列にそれらを生成します:これは、パッケージSTMの正式な要件を満たすためにある
mat = matrix()
dtm.to.mat = function(x){
mat[1,] = x[x != 0]
mat[2,] = colnames(x[x != 0])
return(mat)
}
matrix = list(apply(dtm, 1, dtm.to.mat))
しかし、
x[x != 0]
だけでは動作しません。エラーメッセージ:
$ operator is invalid for atomic vectors
私はこのような場合が考えられました。あらかじめxを行列に変更すると、このエラーが出ることはありません。しかし、私は実際に約2,500,000行のdtmを持っています。私はこれが非常に非効率的であることを恐れる。
こんにちはJamie!どうもありがとうございました。私がdtm入力を使用した理由は、私が中国語のテキストを扱っていることです。 textProcessorの処理された$ vocabは私にガーバブルだけを与えました。私は関数内にエンコーディングパラメータを見ないし、 "language ="パラメータもうまくいきません。 – user7453767