R语言学习笔记——C#中如何使用R语言setwd()函数
在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()函数的更多相关文章
- R语言学习笔记(二): 类与泛型函数
类 大多数R对象都是基于S3类(来源于第三代S语言),例如直方图函数hist()输出是一个包含多个组件的列表,它还有一个属性(attribute),用来指定列表的类,即histogram类. 泛型函数 ...
- 51单片机C语言学习笔记6:51单片机C语言头文件及其使用
很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1 ...
- 【Go语言学习笔记】为什么要选择Go语言
一门语言的兴起一定有他的原因,所谓天下苦Java久矣,Go的到来可以说很多后端开发的福音,尤其是在微服务.分布式这么火的今天,那么,他的优势到底是什么呢? 首先,我们需要现有后端语言的优势痛点: 其实 ...
- php学习笔记5--php中的可变变量,可变函数及匿名函数
可变变量指的是:将一个变量的值再次当做一个变量名从而得到另外一个变量的值.如:$name = 'dqrcsc';$myname = 'name'; //$myname的值碰巧是另一个变量的变量名ech ...
- 2017-05-4-C语言学习笔记
C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...
- Go语言学习笔记十: 结构体
Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- 【数据分析 R语言实战】学习笔记 第八章 方差分析与R实现
方差分析泛应用于商业.经济.医学.农业等诸多领域的数量分析研究中.例如商业广告宣传方面,广告效果可能会受广告式.地区规模.播放时段.播放频率等多个因素的影响,通过方差分析研究众多因素中,哪些是主要的以 ...
- golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换
golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...
随机推荐
- 自定义vue全局组件use使用、vuex的使用
自定义vue全局组件use使用(解释vue.use()的原理)我们在前面学习到是用别人的组件:Vue.use(VueRouter).Vue.use(Mint)等等.其实使用的这些都是全剧组件,这里我们 ...
- Docker-CE 安装(centos7)
配置yum源 > cd /etc/yum.repos.d/ > mkdir repo_bak > mv *.repo repo_bak/ > wget http://mirro ...
- js获取radio选中索引值
<form name="form1" onsubmit="return foo()"> <input type="radio&quo ...
- Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe
目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...
- Ace-Admin框架-首页(一)
ACE-Admin是一个强大的后台模板框架,看起来非常漂亮,但是每个页面内容太多,看起来不知道怎么修改,现在来对首页进行主要内容改装,将不需要的内容都给删除,然后就只剩下一个框架,在开发中,我们就完全 ...
- Codeforces Round #565 (Div. 3) B
B. Merge it! 题目链接:http://codeforces.com/contest/1176/problem/B 题目 You are given an array a consistin ...
- 用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个js效果
js代码 代码如下 复制代码 <div class="input"> <input type="button" id="bt ...
- 嵌入式物联网32 ARM linux 等创客学院学习视频共享给大家
大家手机号登录学习链接即可观看 有坛友说手机号登录不上 具体自测 http://www.makeru.com.cn/live/1392_303.html?s=60220走进嵌入式http:// ...
- MagicBook屏幕频闪解决方案(Windows、MacOS)
对于已经看到这篇文章的小伙伴们,就不解释何为PWM调光频闪了. MagicBook笔记本性价比高,但屏幕素质确实很一般,我们人眼看不出来的频闪,实际对眼睛损害很大,如图(需要设置快门参数,如1/400 ...
- BZOJ 2460:元素(贪心+线性基)
题目链接 题意 中文题意 思路 线性基学习 题目要求选价值最大的并且这些数异或后不为0,可以考虑线性基的性质:线性基的任意一个非空集合XOR之和不会为0.那么就可以贪心地对价值从大到小排序,加入线性基 ...