0

我是编程和 R 的新手。我正在尝试使用 Austin 包中的 wordfish 函数。我从语料库创建了一个术语文档矩阵,但无法成功使用 wordfish 命令:

    library(tm)
    library(austin)
    text.corpus.format<-VCorpus(DirSource("MyDirectory"))

#create Word Frequency Matrix
    wordfreqmatrix<-TermDocumentMatrix(text.corpus.format)
    wcdata<-as.matrix(wordfreqmatrix) # CONVERT WORD COUNT MATRIX FOR USE WITH WORDFISH
    wcdata<-t(wcdata) # TRANSPOSE TERM DOC MATRIX
    as.matrix(as.data.frame(wcdata)) # ASSIGN DOC TITLES TO MATRIX
    rownames(wcdata)<-lapply(text.corpus.format,Author)

#problematic command results: 
wordfish(input=wcdata,dir=c(221,223))
    Error in wordfish(input = wcdata, dir = c(221, 223)) : 
    unused argument (input = wcdata)

wordfish 函数的正确用法是 wordfish(wfm,dir=c(1,10))。我以为我将 wcdata 定义为词频矩阵,但我一定做错了什么。非常感谢任何见解!

4

1 回答 1

2

问题在于wordfish. 如http://www.wordfish.org/software.html所列,有“原始”版本和在 AUSTIN 包中实现的版本。“原始”版本有一个名为 的参数input=,但是,AUSTIN 实现使用一个名为 的参数wfm=

如果您没有命名参数,而只是将其作为传递给函数的第一件事,那么它也可以正常工作,因为这些参数也是位置参数。但是一旦你命名它们,你就会破坏位置顺序并且名称优先。

所以要么去掉名字,要么使用 AUSTIN 包的正确名称 ( input=)

此外,该包正在查找传入对象的特定名称。您可以wfm通过函数运行数据来确保您正在传递对象wfm。我不确定“dir”参数的用途,但我也必须设置它才能运行这个最小的示例。

docs <- c(D1 = "look at all the words in the document", 
    D2 = "i hope this document has more words than the other document")
text.corpus.format <- Corpus(VectorSource(docs))

wordfreqmatrix <- TermDocumentMatrix(text.corpus.format)
wcdata <- wfm(as.matrix(wordfreqmatrix))

wordfish(wcdata, dir=c(1,2))

# Call:
#   wordfish(wfm = wfm(wcdata), dir = c(1, 2))
# 
# Document Positions:
#   Estimate Std. Error    Lower    Upper
# 1  -1.0378     0.4832 -1.98476 -0.09078
# 2   0.8763     0.4322  0.02917  1.72351
于 2014-06-14T03:34:06.547 回答