私はHTMLページからすべてのhtmlデータを削除するR関数を持っています。 私はR でそれを実行するとき、それは動作しますが、私はRserveを通してそれを実行すると、エラー生成します。RserveException:eval failed構文エラー
スレッド「メイン」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の評価:
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でデータを割り当ててから、関数を実行しようとしました。
新しい更新 - 質問は、もはやなどの問題を引き起こしていた必要ではなかったように単一引用符と二重引用符やバックスラッシュ
別のラインなどの問題を引き起こしていた
- エスケープ文字を解決します私はそれをコメントしたり削除したりしなかった。
おかげですべての! :) 私の回答を確認する説明!! :)
ありがとうございましたが、うまくいきませんでした。私のJavaコードは他のR関数と正しく動作します。私はエラーがデータ内で発生する複数の単一引用符のためだと思う。 –
@RugvedModakだけで '\'を追加すると問題が解決します。更新された回答を参照してください – parth
ありがとうございます。しかし、私は正規表現について知っています。 –