R语言 .jcall()中的错误

gzszwxb4  于 2023-09-27  发布在  其他
关注(0)|答案(5)|浏览(90)

我正在运行以下代码并收到此错误:
.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")

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

7nbnzgx9

7nbnzgx91#

Sanmeet是对的-这是 Dataframe 中NAs的问题。
就在你的台词之前:review_source <- VectorSource(Comment)
插入以下一行:

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

这会将所有NA值更改为短语NULLVALUEENTERED(您可以随意更改)。没有更多的NAs,代码应该可以正常运行。

jc3wubiy

jc3wubiy2#

由于字符串向量Comment中的NA,您在tokenizer中得到错误

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)]

现在应用预处理步骤,创建语料库等
希望这对你有帮助。

jqjz2hbq

jqjz2hbq3#

建议:我在使用以下命令阅读Excel(.xlsx)文件时出现此错误:

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

注意,endRow的值应该是NULL或一个有效的数字。但

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

因此,您可能需要检查参数值和参数与参数的对齐情况。

ulydmbyx

ulydmbyx4#

在你的 Dataframe 中似乎有NAs。运行is.na()并删除这些行。尝试再次运行代码。应该可以的

von4xj4u

von4xj4u5#

或者你可以过滤dataframe:

filter(Sample_DF, !is.na(ColumnName) | ColumnName != "")

相关问题