对于具有此表单的数据框:
pg_backups
我希望生成一个大小为docId bow
1 [(3,1),(4,3),(6,1)...]
2 [(1,1),(2,5),(3,1),(6,3)...]
...
的大型doc-word-matrix(d * w
表示文档数量,d
表示单词数量):
w
SO中有一个python解决方案。我想知道如何在R中做到这一点?谢谢!
答案 0 :(得分:0)
我们可以首先提取所有(idx,count),然后将其格式化为所需的矩阵格式,如下所示:
options(stringsAsFactors=FALSE)
library(stringi)
library(plyr)
df <- data.frame(docId=1:2, bow=c("[(3,1),(4,3),(6,1),(10,8)","[(1,1),(2,5),(3,1),(6,3)"))
tuples <- stri_extract_all_words(df$bow)
ans <- rbind.fill.matrix(lapply(tuples, function(x) {
idx <- stri_split_fixed(x, ",", simplify=TRUE)
idx <- `dim<-`(as.numeric(idx),dim(idx))
res <- matrix(0, ncol=max(idx[,1]))
res[1,idx[,1]] <- idx[,2]
res
}))
ans[is.na(ans)] <- 0
ans