在R语言编译器中,设置当前工作文件夹可以用setwd()函数。

> setwd("e://桌面//")
> setwd("e:\桌面\")
> setwd("e:/桌面/")

这三种结构都是可以编译通过的,

但是在VS C#中却不行,只有一种能运行成功。

(PS:R语言在VS中运行要先配置环境,还没配置的童鞋先要配置好,才可运行,如有问题可看我前面的随笔。)

就是这种结构,engine.Evaluate("setwd('e:/桌面/')");

我调试了很多次,确实只有这样写才能设置它的工作文件夹,但是必须保证文件夹存在。

下面贴上完整代码,我是在winform中调试的,然后用PictuerBox显示图片。

//配置R语言环境
private void LoadRPath(string RVersion = "R-3.4.1")//默认R-3.4.1
{ string dlldir = @"C:\Program Files\R\" + RVersion + @"\bin\x64";//默认64位 bool r_located = false; var rPath = System.Environment.Is64BitProcess ? string.Format(@"C:\Program Files\R\" + RVersion + @"\bin\x64") : string.Format(@"C:\Program Files\R\" + RVersion + @"\bin\i386"); dlldir = rPath; while (r_located == false)
{ try
{ REngine.SetEnvironmentVariables(dlldir); r_located = true; } catch
{ if (System.Environment.Is64BitProcess)
{ MessageBox.Show(@"找不到R运行环境:\R\" + RVersion + @"\bin\x64 " + " \n请手动添加文件夹目录"); } else
{ MessageBox.Show(@"找不到R运行环境:\R\" + RVersion + @"\bin\i386" + " \n请手动添加文件夹目录"); } FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog(); if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{ dlldir = @folderBrowserDialog1.SelectedPath; } } } } private void CalculateHist()
{
//避免产生相同名称文件
string rnd = System.Guid.NewGuid().ToString().Replace("-", "");
string fileName = "i" + rnd + "_Hist.png";
//拿到程序运行目录
string sysPath = Application.StartupPath;
string dir = sysPath + "\\RImage\\Hist\\";
string fullDir = dir + fileName;
//创建文件夹
Directory.CreateDirectory(Path.GetDirectoryName(dir));
//替换
dir = dir.Replace("\\", "/");
//设置工作文件夹
engine.Evaluate("setwd('" + dir + "')");
engine.Evaluate(string.Format("png(file='{0}',bg ='transparent',width={1},height={2})", fileName, this.ptbHist.Width, this.ptbHist.Height)); // string Rcode = @"library('scatterplot3d')
// z <- seq(-10, 10, 0.01)
// x <- cos(z)
// y <- sin(z)
// scatterplot3d(x, y, z, highlight.3d=TRUE, col.axis='blue', col.grid='lightblue',main='3d绘图',pch=20)
// ";
engine.Evaluate(@"x <- (0:12) * pi / 12
y <- cos(x)
plot(x,y);
");
//engine.Evaluate(Rcode);
engine.Evaluate("dev.off()"); //var x = engine.Evaluate("x <- rnorm(100, mean=50, sd=10)").AsNumeric(); //engine.Evaluate("hist(x)");
//var x = engine.Evaluate("x <- 1:100").AsNumeric(); //var y = engine.Evaluate("y <- 5:105").AsNumeric(); //engine.Evaluate("model = function (a, b){23.86+5.525*b-2.5725*a-6.6413*b^2-5.1862*a^2}"); //evaluate function //engine.Evaluate("z = outer(x, y ,model)"); //engine.Evaluate("contour(x,y,z, nlevels = 10)");
//string path = System.IO.Path.GetFullPath(fileName);
Bitmap image = new Bitmap(fullDir);
ptbHist.Image = image;
}

  欢迎大家交流学习~~~~~~~~

R语言学习笔记——C#中如何使用R语言setwd()函数的更多相关文章

  1. R语言学习笔记(二): 类与泛型函数

    类 大多数R对象都是基于S3类(来源于第三代S语言),例如直方图函数hist()输出是一个包含多个组件的列表,它还有一个属性(attribute),用来指定列表的类,即histogram类. 泛型函数 ...

  2. 51单片机C语言学习笔记6:51单片机C语言头文件及其使用

    很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1 ...

  3. 【Go语言学习笔记】为什么要选择Go语言

    一门语言的兴起一定有他的原因,所谓天下苦Java久矣,Go的到来可以说很多后端开发的福音,尤其是在微服务.分布式这么火的今天,那么,他的优势到底是什么呢? 首先,我们需要现有后端语言的优势痛点: 其实 ...

  4. php学习笔记5--php中的可变变量,可变函数及匿名函数

    可变变量指的是:将一个变量的值再次当做一个变量名从而得到另外一个变量的值.如:$name = 'dqrcsc';$myname = 'name'; //$myname的值碰巧是另一个变量的变量名ech ...

  5. 2017-05-4-C语言学习笔记

    C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...

  6. Go语言学习笔记十: 结构体

    Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...

  7. 2017-04-21周C语言学习笔记

    C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

  8. 【数据分析 R语言实战】学习笔记 第八章 方差分析与R实现

    方差分析泛应用于商业.经济.医学.农业等诸多领域的数量分析研究中.例如商业广告宣传方面,广告效果可能会受广告式.地区规模.播放时段.播放频率等多个因素的影响,通过方差分析研究众多因素中,哪些是主要的以 ...

  9. golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换

    golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...

随机推荐

  1. 文件识别浅谈(含office文件区分)

    前言 本文主要根据后台接口识别Office文件类型这一话题做一些分享,主要方向还是放在不能获取到文件名情况下的Office文件识别. 可获取到文件名 如果后端接口可以获取到完成的文件名称,则整个过程会 ...

  2. .NET Core 3.0之深入源码理解Kestrel的集成与应用(一)

      写在前面 ASP.NET Core 的 Web 服务器默认采用Kestrel,这是一个基于libuv(一个跨平台的基于Node.js异步I/O库)的跨平台.轻量级的Web服务器. 在开始之前,先回 ...

  3. MAC电脑修改Terminal以及vim高亮显示

    1. Terminal高亮显示 编辑~/.bash_profile文件,在末尾增加两行: export CLICOLOR= export LSCOLORS=exfxcxdxcxegedabagacad ...

  4. spring cloud 系列第7篇 —— sleuth+zipkin 服务链路追踪 (F版本)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.简介 在微服务架构中,几乎每一个前端的请求都会经过多个服务单元协调来提 ...

  5. TCP/IP 第三章

    1,ip协议不可靠.无连接特性介绍 不可靠:计算机A往计算机B发送数据报1,若途径的路由器缓存已满,或者ttl(time to live 生存周期)到了,则路由器直接丢弃数据包1,并产生icmp数据包 ...

  6. Filebeat 7.1.1 安装及使用(连接ES)

    1. 下载 & 解压 # 下载 wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.1.1-linux- ...

  7. Codeforces Gym101341K:Competitions(DP)

    http://codeforces.com/gym/101341/problem/K 题意:给出n个区间,每个区间有一个l, r, w,代表区间左端点右端点和区间的权值,现在可以选取一些区间,要求选择 ...

  8. SPOJ STC02 - Antisymmetry(Manacher算法求回文串数)

    http://www.spoj.com/problems/STC02/en/ 题意:给出一个长度为n的字符串,问其中有多少个子串s可以使得s = s按位取反+翻转. 例如样例:11001011. 10 ...

  9. iOS组件化开发一使用source管理远端库升级(四)

    一.克隆远端库代码到本地选择master分支 1.克隆 2.代码会显示出你所有版本的tag 二.可以在Example目录下验证代码的正确行: cd 到库的文件夹然后 pod install comma ...

  10. 使用Xcode + Python进行IOS运动轨迹模拟

    前言 在某些app中,需要根据用户的实时位置来完成某些事件 例如跑步打卡软件(步道乐跑).考勤打卡软件(叮叮).某些基于实时位置的游戏(Pokemon Go.一起来捉妖) 一般解决办法是通过使用安卓模 ...