楼主: ethantung
10705 22

[学习分享] 如何在VBnet(或C#)里引用R程序 [推广有奖]

  • 1关注
  • 1粉丝

已卖:1616份资源

硕士生

15%

还不是VIP/贵宾

-

威望
0
论坛币
2450 个
通用积分
93.4519
学术水平
4 点
热心指数
10 点
信用等级
-1 点
经验
4186 点
帖子
81
精华
0
在线时间
125 小时
注册时间
2008-12-17
最后登录
2025-2-6

楼主
ethantung 发表于 2011-12-25 20:48:28 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
最近在编心理学的实验程序,想借助R强大的统计功能进行后期的实验数据处理。经过大量的百度和谷歌之后成功实现在VBnet里引入R,于是想把经验和大家分享一下
准备:
1.R的程序包,注意一定要是2.11版,版本太高,不支持在VBnet里面运行(R-2.11.1-win32.exe)。当然,版本太低也不行
下载地址是:http://cran.r-project.org/bin/windows/base/old/2.11.1/R-2.11.1-win32.exe
2.R的COM库,下载的地址是:http://ftp.ctex.org/mirrors/CRAN/contrib/extra/dcom/R_Scilab_DCOM3.0-1B5.exe
3.最重要的一步,要下载一个rscproxy 的R包,很多人就是因为没有下载这个动态链接库(rscproxy.dll)而无法在VBnet(或C#)里调用(没有下载这个库会出现“异常来自 HRESULT:0x80040013”这样的错误提示)。下载地址是:http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/r-release/rscproxy_1.3-1.zip
安装R,然后安装R的COM库,然后将rscproxy 包里面的rscproxy.dll复制到R的安装目录下的Bin文件夹下。
然后就可以(StatConnControls.ocx,StatConnectorClnt.dll和StatConnectorSrv.exe),见下图

VBnet项目里引用三个文件
然后,在模块里添加引用:
Imports STATCONNECTORCLNTLib
Imports StatConnectorCommonLib
Imports STATCONNECTORSRVLib
就可以调用函数了。
以下下是一个简单的启动示例(在module里)
Imports STATCONNECTORCLNTLib
Imports StatConnectorCommonLib
Imports STATCONNECTORSRVLib
Imports System.Runtime.InteropServices
Public Module StatRModule
    Private RApp As StatConnector
    Public Sub RInitialize()
        ''''''''''''''''''''''启动后台R''''''''''''''''''''''''''
        Try
            If RApp Is Nothing Then
                RApp = New STATCONNECTORSRVLib.StatConnector()
            End If
            RApp.Init("R")
        Catch exR As COMException
            MsgBox("程序错误:" + exR.ToString, MsgBoxStyle.Critical, "错误")
            RApp = Nothing
        End Try
    End Sub
    Public Sub RTerminate()
        ''''''''''''''''''''''关闭后台R''''''''''''''''''''''''''
        If RApp Is Nothing Then
            Exit Sub
        Else
            RApp.Close()
            RApp = Nothing
        End If
    End Sub
    Public Function tDistBound(ByVal nSample As Integer, ByVal dSig As Double) As Double
        RInitialize()
        RApp.SetSymbol("nSample", nSample)
        RApp.SetSymbol("dSig", dSig)
        RApp.Evaluate("tDistBound<-qt(1-dSig/2, nSample - 2) * sqrt(nSample / (nSample - 1))")
        tDistBound = CType(RApp.GetSymbol("tDistBound"), Double)
        RTerminate()
    End Function

C# 的引用可以参见以下文章
http://www.codeproject.com/KB/cs/RtoCSharp.aspx

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:NET R程序 connector exception R-Project 下载地址 心理学 百度 谷歌 程序

已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
dxystata + 20 + 20 + 1 + 1 精彩帖子
ryusukekenji + 1 + 1 + 1 对论坛有贡献
ltx5151 + 20 + 20 + 1 + 1 很赞

总评分: 经验 + 40  论坛币 + 40  学术水平 + 3  热心指数 + 3  信用等级 + 1   查看全部评分

本帖被以下文库推荐

沙发
zelecn 发表于 2013-6-2 11:09:21
好!学习了!

藤椅
shrimpn 发表于 2013-8-9 21:31:52
到这个网站http://rcom.univie.ac.at/
下载两个文件 statconnDCOM 和 RExcel
statconnDCOM3.5-1B2_Noncommercial.exe 和 RExcelInst3.2.7_Noncommercial.exe
按照顺序安装一下(先装statconnDCOM,后装RExcel)。
在VS2010下面测试了个简单例子可以运行。

板凳
zzxx53 发表于 2013-8-10 07:11:51
很有用的方法
不知道python下有没有类似的

报纸
jackcakal 发表于 2013-8-21 20:36:47
感謝~學習一下!

地板
assess 发表于 2013-8-22 20:35:17
R.NET也很方便。

7
shrimpn 发表于 2014-1-7 00:48:11
assess 发表于 2013-8-22 20:35
R.NET也很方便。
R.Net文档不太多,这位同学可以贡献点资料学习吗?

8
airintheshine 发表于 2014-6-18 20:20:12
shrimpn 发表于 2013-8-9 21:31
到这个网站http://rcom.univie.ac.at/
下载两个文件 statconnDCOM 和 RExcel
statconnDCOM3.5-1B2_Noncom ...
statconnDCOM下载好之后不能安装,总出现安装之前要卸载以前的版本这个问题,我没有安装之前的版本,这是怎么回事,求助

9
shrimpn 发表于 2014-6-19 04:22:54
airintheshine 发表于 2014-6-18 20:20
statconnDCOM下载好之后不能安装,总出现安装之前要卸载以前的版本这个问题,我没有安装之前的版本,这是 ...
什么情况?截图看看撒。
之前掌握的不够,其实只要安装statconnDCOM3.5-1B2_Noncommercial.exe就可以了。你是这步有问题么?还有项目必须是x86才行哦。

10
airintheshine 发表于 2014-7-2 11:15:50
shrimpn 发表于 2014-6-19 04:22
什么情况?截图看看撒。
之前掌握的不够,其实只要安装statconnDCOM3.5-1B2_Noncommercial.exe就可以了。 ...
安装之后会出现这个窗口

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 22:10