K 表示 R 中的聚类 - 无效运算符

K means clustering in R - invalid operator

我收到一个错误 Error in x$j : $ operator is invalid for atomic vector 而 运行 下面的 k 的 R 代码表示聚类。

有几个早期步骤可以忽略,它们只是出于其他原因,但为了完整起见,我将它们包括在内。

findFreqTerms(dtm[cl$cluster==1], 50) 行抛出错误。其他一切正常。

library(tm)
data(crude)


# create mycorpus first using this line
mycorpus<-Corpus(VectorSource(crude))

#create document term matrix using tdidf for further processing
dtm <- DocumentTermMatrix(mycorpus)
dtm_tfxidf <- weightTfIdf(dtm)


## do document clustering
### k-means (this uses euclidean distance)
m <- as.matrix(dtm_tfxidf)
rownames(m) <- 1:nrow(m)

### don't forget to normalize the vectors so Euclidean makes sense
norm_eucl <- function(m) m/apply(m, MARGIN=1, FUN=function(x) sum(x^2)^.5)
m_norm <- norm_eucl(m)


### cluster into 10 clusters
cl <- kmeans(m_norm, 10)
cl

table(cl$cluster)

### show clusters using the first 2 principal components
plot(prcomp(m_norm)$x, col=cl$cl)

findFreqTerms(dtm[cl$cluster==1], 50) #this is not working
inspect(mycorpus[which(cl$cluster==1)])

非常感谢任何帮助。

您的问题是文档术语矩阵 dtm 应该作为具有行和列的二维矩阵进行索引。应该是

findFreqTerms(dtm[cl$cluster==1,], 50)

(注意多余的逗号,我们将第二个参数留空以便返回所有列)