我正在运行以下代码并收到此错误:
.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")
有趣的问题是,我已经在多个文件上运行了这个代码,只有特定的文件有错误。
答案 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")
工作正常。所以你可能想检查参数对齐的参数值和参数。