【发布时间】:2017-09-07 11:21:17
【问题描述】:
我有一个从 html 页面中删除所有 html 数据的 R 函数。 当我在 R 中运行它时它工作 但是当我通过 Rserve 运行它时会产生错误:
线程“主”org.rosuda.REngine.Rserve.RserveException 中的异常: eval 失败,请求状态:R 解析器:语法错误
at org.rosuda.REngine.Rserve.RConnection.eval(RConnection.java:234) at CereScope_Data.main(CereScope_Data.java:80)
Java Eval 我在哪里得到错误:
REXP lstrRemoveHtml = cobjConn.eval("RemoveHtml('" + lstrRawData + "')");
我的 R 功能: rawdata 是一个 HTML 页面
RemoveHtml <- function(rawdata) {
library("tm")
## Convering Data To UTF-8 Format
## Creating Corpus
Encoding(rawdata) <- "latin1"
docs <- Corpus(VectorSource(iconv(rawdata, from = "latin1", to = "UTF-8", sub = "")))
toSpace <- content_transformer(function(x , pattern) gsub(pattern, " ", x))
docs <- gsub("[^\\b]*(<style).*?(</style>)", " ", docs)
docs <- Corpus(VectorSource(gsub("[^\\b]*(<script).*?(</script>)", " ", docs)))
docs <- tm_map(docs, toSpace, "<.*?>")
docs <- tm_map(docs, toSpace, "(//).*?[^\n]*")
docs <- tm_map(docs, toSpace, "/")
docs <- tm_map(docs, toSpace, "\\\\t")
docs <- tm_map(docs, toSpace, "\\\\n")
docs <- tm_map(docs, toSpace, "\\\\")
docs <- tm_map(docs, toSpace, "@")
docs <- tm_map(docs, toSpace, "\\|")
docs <- tm_map(docs, toSpace, "\\\"")
docs <- tm_map(docs, toSpace, ",")
RemoveHtmlDocs <- tm_map(docs, stripWhitespace)
return(as.character(RemoveHtmlDocs)[1])
}
更新 - 我已经尝试过的事情
- 转义字符可能会导致单引号和双引号以及反斜杠等问题
- 我还尝试通过 eval 将整个数据分配给 R 变量,然后运行该函数
新更新 - 问题已解决
- 转义字符会导致单引号和双引号以及反斜杠等问题
- 另一个不再需要的行导致了问题,因为我没有评论或删除它。
谢谢大家!! :) 检查我的答案以获得描述! :)
【问题讨论】: