Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
tm软件包:在矩阵中而不是在R中的列表中输出findAssocs()_R_Matrix_Tm_Term Document Matrix - Fatal编程技术网

tm软件包:在矩阵中而不是在R中的列表中输出findAssocs()

tm软件包:在矩阵中而不是在R中的列表中输出findAssocs(),r,matrix,tm,term-document-matrix,R,Matrix,Tm,Term Document Matrix,考虑以下列表: library(tm) data("crude") tdm <- TermDocumentMatrix(crude) a <- findAssocs(tdm, c("oil", "opec", "xyz"), c(0.7, 0.75, 0.1)) library(tm) 数据(“原油”) tdm这里有一个解决方案,使用重塑2来帮助重塑数据 library(reshape2) aa<-do.call(rbind, Map(function(d, n)

考虑以下列表:

library(tm)
data("crude")
tdm <- TermDocumentMatrix(crude)
a <- findAssocs(tdm, c("oil", "opec", "xyz"), c(0.7, 0.75, 0.1))
library(tm)
数据(“原油”)

tdm这里有一个解决方案,使用
重塑2
来帮助重塑数据

library(reshape2)
aa<-do.call(rbind, Map(function(d, n) 
    cbind.data.frame(
      xterm=if (length(d)>0) names(d) else NA, 
      cor=if(length(d)>0) d else NA, 
      term=n),
    a, names(a))
)

dcast(aa, term~xterm, value.var="cor")
library(重塑2)
aa0)姓名(d)其他不适用,
cor=如果(长度(d)>0)d,则不适用,
术语=n),
a、 姓名(a))
)
dcast(aa,term~xterm,value.var=“cor”)

或者您可以使用
dplyr
tidyr

 library(dplyr)
 library('devtools')
 install_github('hadley/tidyr')

 library(tidyr)

 a1 <- unnest(lapply(a, function(x) data.frame(xterm=names(x),
                cor=x, stringsAsFactors=FALSE)), term)


  a1 %>% 
     spread(xterm, cor) #here it removed terms without any `cor` for the `xterm`
  #  term 15.8 ability above agreement analysts buyers clearly emergency fixed
  #1  oil 0.87      NA  0.76      0.71     0.79   0.70     0.8      0.75  0.73
  #2 opec 0.85     0.8  0.82      0.76     0.85   0.83      NA      0.87    NA
  #  late market meeting prices prices. said that they trying who winter
  #1  0.8   0.75    0.77   0.72      NA 0.78 0.73   NA    0.8 0.8    0.8
  #2   NA     NA    0.88     NA    0.79 0.82   NA  0.8     NA  NA     NA
库(dplyr)
库(“devtools”)
安装_github('hadley/tidyr'))
图书馆(tidyr)
a1%
spread(xterm,cor)#在这里,它删除了没有任何“cor”表示“xterm”的术语`
#条款15.8上述协议分析员的能力明确规定了紧急情况
#1机油0.87钠0.76 0.71 0.79 0.70 0.8 0.75 0.73
#2欧佩克0.85 0.8 0.82 0.76 0.85 0.83纳0.87纳
#后期市场价格。说他们在试谁过冬
#1 0.80.75 0.77 0.72 NA 0.78 0.73 NA 0.80.80.8
#2钠0.88钠0.79 0.82钠0.8钠
更新
a
如果
a
是:
a@Steven Beaupre该
a
是从你的帖子中获取的
a@Steven Beaupre完成它需要很长时间吗?是的,完成它需要很长时间。@Steven Beaupre`我稍后会检查它,因为我现在必须去。根据你新的
a
更新了解决方案。我有点不明白为什么
a它不起作用,因为
findAssocs(tdm,c(“石油”,“欧佩克”,“xyz”),0.7)
c(“石油”,“欧佩克”,“xyz”)
与语料库中的所有剩余术语进行比较。例如,它没有将“石油”与“欧佩克”进行比较。它不会计算传入向量中的项的成对相关性。所以,当你通过语料库中的每一个术语时,没有什么可以比较的了,所以你没有得到任何结果。
 aNew <- sapply(tdm$dimnames$Terms, function(i) findAssocs(tdm, i, corlimit=0.95))
 aNew2 <- aNew[!!sapply(aNew, function(x) length(dim(x)))]
 aNew3 <- unnest(lapply(aNew2, function(x) data.frame(xterm=rownames(x), 
                     cor=x[,1], stringsAsFactors=FALSE)[1:3,]), term)
  res <- aNew3 %>% 
              spread(xterm, cor) 

  dim(res)
  #[1] 1021  160

   res[1:3,1:5]
    #     term ... 100,000 10.8 1.1
    #1     ...  NA      NA   NA  NA
    #2 100,000  NA      NA   NA   1
    #3    10.8  NA      NA   NA  NA