当我使用 C# 代码运行 Rscript 时,我收到了我在主题中提到的错误。实际上,RMySQL 包已正确安装在我的系统(Windows 7 64 位)中,我可以直接从 Rconsole 运行脚本。但是当从 C# 代码调用时,我收到了这个错误。请帮助我找到相同的解决方案。谢谢
这是我的 C# 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RDotNet;
namespace hottopics_new
{
public partial class hottopic : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
REngine.SetEnvironmentVariables();
REngine engine = REngine.GetInstance();
engine.Initialize();
var hottopic = engine.Evaluate("source('E:/******/******/Rscript/hottopics.R')").AsDataFrame();
var words = hottopic[1].AsCharacter().ToArray();
var freq = hottopic[2].AsCharacter().ToArray();
Console.WriteLine(words);
Console.WriteLine(freq);
engine.Dispose();
}
}
}
```
我在上面的代码“var hottopic = engine.Evaluate("source('E:/ ** / ** /R script/hottopics.R')").AsDataFrame();”中的以下位置收到错误
这是我的 R 脚本
user_id = 39988
library(RMySQL)
con = dbConnect(MySQL(), user='****', password='****',
dbname='****', host='*********')
# Add the text mining library for using the removeWords and stopwords functions
library(tm)
setwd("E:/*****/****/R script")
sqlQuery <- paste("SELECT b.user_id,a.user_social_account_id,a.content
FROM mydb.updates a
INNER JOIN mydb.user_social_accounts b
ON a.user_social_account_id = b.id
WHERE a.user_social_account_id IN (SELECT id FROM mydb.user_social_accounts WHERE user_id =",user_id,')',sep = "")
updates <- dbGetQuery(con,statement=sqlQuery)
dbDisconnect(con)
words <- read.csv("stopwords.csv",colClasses = "character")
# Convert the 'words' object from data.frame to charcter vector format
words <- words$Words
updates$content <- tolower(updates$content)
content <- updates$content
# Split each words in the content and saved in a character vector format
content <-unlist(strsplit(content, split=" "))
# Remove all the stopwords,numbers and symbols from it
content <- removeWords(content,c(stopwords("english"),stopwords("SMART"),words))
content <- gsub("[^a-zA-Z]", "", content)
# Count each words frequency using the 'table' function and store the result in data.frame format
word_count <- as.data.frame(table(content))
names(word_count) <- c("Word","Freq")
# Removing the blank character from the result that comes when removing the symbols and numbers
word_count <- word_count[-(word_count$Word == ""),]
# Order the word_count data frame in the descending order of Frequency of words
word_count <- word_count[order(-word_count$Freq,word_count$Word),]
head(word_count,10)