k-Meansを実装しています。これは私の主なデータ構造です:
dt1 は {Filename,featureVector,GroupItBelongsTo} を持つ Data.table です
dt1<- data.table(Filename=files[1:limit],Vector=list(),G=-1)
setkey(dt1,Filename)
featureVector はリストです。出現に関連付けられた単語があり、次の行を使用して各単語に出現を追加しています。
featureVector[[item]] <- emaildt[email==item]$N
私が電話をかけたときの私のコンソールからの典型的な抜粋は次のとおりdt1
です。
Filename Vector G
1: 000057219a473629b53d33cfedef590f.txt 1,1,1,1,1,1, 3
2: 00007afb5a5e467a39e517ae87e7fad5.txt 0,0,0,0,0,0, 3
3: 000946d248fdb1d5d05c59a91b00e8f2.txt 0,0,0,0,0,0, 3
4: 000bea8dc6f716a2cac6f25bdbe09073.txt 0,0,0,0,0,0, 3
グループ番号ごとに新しい重心を計算したいと思います。つまり、位置1のすべてのベクトル位置を互いに合計したい、[2]など..最後まで、その後-それらすべてを平均します。
例: v1=[1,1,1]、v2=[2,2,2]、重心は = c1=[1,5;1,5;1,5]
私はやろうとしました: sapply(dt1[tt]$Vector,mean) (「合計」でも試しました)、列ごと(各n番目のコンポーネント)ではなく、行ごとに(各ベクトル内で)合計して「意味」します私がやりたいように。
どうやってするの?
====更新、コメントで質問に答える====
> head(dt1)
Filename Vector G
1: 000057219a473629b53d33cfedef590f.txt 1,1,1,1,1,1, 1
2: 00007afb5a5e467a39e517ae87e7fad5.txt 0,0,0,0,0,0, 1
3: 000946d248fdb1d5d05c59a91b00e8f2.txt 0,0,0,0,0,0, 3
4: 000bea8dc6f716a2cac6f25bdbe09073.txt 0,0,0,0,0,0, 4
5: 000fcfac9e0a468a27b5e2ad0f78d842.txt 0,0,0,0,0,0, 1
6: 00166a4964d6c939f8f62280b85e706d.txt 0,0,0,1,0,0, 1
> class(dt1)
[1] "data.table" "data.frame"
>
入力dt1$Vector
すると次のようになります (私は小さなサンプルをコピーしただけです。もっと多くの単語がありますが、すべて同じように見えます):
[[1]]
homosexuality articles church people interest
1 1 1 1 1
thread email send warning worth
1 1 1 1 1
そして、これがclass()出力です
> class(dt1$Vector)
[1] "list"
入力時のスクリーンショット:
A<-as.matrix(t(as.data.frame(dt1$Vector)))
の結果class(dt1$Vector[[1]])
:
[1] "numeric"