.jcall()出错

时间:2015-11-16 20:57:43

标签: r

我正在运行以下代码并收到此错误:

  

.jcall中的错误(“RWekaInterfaces”,“[S”,“tokenize”,。jcast(tokenizer,   :java.lang.NullPointerException

setwd("C:\\Users\\jbarr\\Desktop\\test)
library (tm); library (wordcloud);library (RWeka); library (tau);library(xlsx);

Comment <- read.csv("testfile.csv",stringsAsFactors=FALSE) 
str(Comment) 
review_source <- VectorSource(Comment) 

corpus <- Corpus(review_source)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removeWords,stopwords(kind = "english"))
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, removeWords, c("member", "advise", "inform", "informed", "caller", "call","provided", "advised")) 


dtm <- DocumentTermMatrix(corpus)
dtm2 <- as.matrix(dtm)
wordfreq <- colSums(dtm2)
wordfreq <- sort(wordfreq, decreasing=TRUE)
head(wordfreq, n=100)
wfreq <- head(wordfreq, 500)
set.seed(142)
words <- names(wfreq)
dark2 <- brewer.pal(6, "Dark2")
wordcloud(words[1:100], wordfreq[1:100], rot.per=0.35, scale=c(2.7, .4), colors=dark2, random.order=FALSE)
write.xlsx(wfreq, "C:\\Users\\jbarr\\Desktop\\test")

有趣的问题是,我已经在多个文件上运行了这个代码,只有特定的文件有错误。

4 个答案:

答案 0 :(得分:1)

Sanmeet是对的 - 这是数据框中NAs的问题。

就在你的行之前:review_source <- VectorSource(Comment)

插入以下行:

Comment[which(is.na(Comment))] <- "NULLVALUEENTERED"

这会将您的所有NA值更改为短语NULLVALUEENTERED(随意更改)。不再需要NAs,代码应运行正常。

答案 1 :(得分:1)

由于字符串向量Comment中的NA,您在令牌生成器中遇到错误

Comment <- read.csv("testfile.csv",stringsAsFactors=FALSE) 
str(Comment)     
length(Comment)
Comment = Comment[complete.cases(Comment)]
length(Comment)

或者您也可以按以下方式使用is.na

Comment = Comment[!is.na(Comment)]

现在应用预处理步骤,创建语料库等

希望这会有所帮助。

答案 2 :(得分:0)

好像数据框中有NAs。运行is.na()并删除这些行。尝试再次运行代码。它应该工作。

答案 3 :(得分:0)

建议:使用以下方法读取excel(.xlsx)文件时出现此错误:

df2 <- read.xlsx2("foobar.xlsx", sheetName = "Sheet1", startRow = 1, endRow = 0). 

请注意,endRow的值应为NULL或有效数字。但是

df2 <- read.xlsx2("foobar.xlsx", sheetName = "Sheet1")

工作正常。所以你可能想检查参数对齐的参数值和参数。