• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

.Net调用R语言

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 ///加载自己写的R语言算法库
 public List<double> GetZTFB(double[] data)
        {
            List<double> par = new List<double>();
            try
            {
                //调用R语言算法
                REngine.SetEnvironmentVariables();
                REngine engine = REngine.GetInstance(null, true, null, null);
                NumericVector x = engine.CreateNumericVector(data);
                engine.SetSymbol("x", x);
                string path = System.Windows.Forms.Application.StartupPath + "\\R_File\\ztfb.R";
                path = "source(\"" + path + "\")";
                path = path.Replace("\\", "\\\\");//这一步至关重要,否则会报错
                engine.Evaluate(path);
                engine.Evaluate("a<- ztfb(x)");

                //                engine.Evaluate(@"normal <- function(theta){
                //                                              mu <- theta[1]
                //                                              sigma <- theta[2]
                //                                              n <- length(x)
                //                                              logL <- -0.5*n*log(2*pi) - n*log(sigma) - sum(0.5*(x - mu)^2/sigma^2)
                //                                              return (-logL)
                //                                            } 
                //                a<- nlminb(c(0,1),normal)");
                NumericVector a = engine.Evaluate("a$par[1]").AsNumeric();
                NumericVector b = engine.Evaluate("a$par[2]").AsNumeric();
                par.Add(Convert.ToDouble(a[0]));
                par.Add(Convert.ToDouble(b[0]));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return par;
        }

///加载R语言下载库
 public List<double> GetZTFB(double[] data)
        {
            List<double> par = new List<double>();
            try
            {
                //调用R语言算法
                REngine.SetEnvironmentVariables();
                REngine engine = REngine.GetInstance(null, true, null, null);
				///加载R语言库
				engine.Evaluate("library(\"bit\", lib.loc=\"C:/Program Files/R/R-3.3.2/library\")")
                NumericVector x = engine.CreateNumericVector(data);
                engine.SetSymbol("x", x);
                string path = System.Windows.Forms.Application.StartupPath + "\\R_File\\ztfb.R";
                path = "source(\"" + path + "\")";
                path = path.Replace("\\", "\\\\");//这一步至关重要,否则会报错
                engine.Evaluate(path);
                engine.Evaluate("a<- ztfb(x)");

                //                engine.Evaluate(@"normal <- function(theta){
                //                                              mu <- theta[1]
                //                                              sigma <- theta[2]
                //                                              n <- length(x)
                //                                              logL <- -0.5*n*log(2*pi) - n*log(sigma) - sum(0.5*(x - mu)^2/sigma^2)
                //                                              return (-logL)
                //                                            } 
                //                a<- nlminb(c(0,1),normal)");
                NumericVector a = engine.Evaluate("a$par[1]").AsNumeric();
                NumericVector b = engine.Evaluate("a$par[2]").AsNumeric();
                par.Add(Convert.ToDouble(a[0]));
                par.Add(Convert.ToDouble(b[0]));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return par;
        }

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap