R.NETとExcel-DNAで32bitのExcelからRを使う
目的
Excel2010の32bitと最新のR.NETで以下のことをやる
R.NETとExcel-DNAでRで動くExcelアドインを作る


動作環境
Windows7 64bit
Office2010 32bit
ExcelDNA 0.30   ※要.NET Framework2.0~4.0のいづれか
R.NET 1.5.5         ※要.NET Framework4.0

実行手順
1.R.NETを展開したら次のDLLを32ビットで動くようにする
(32ビットOSでは不要なはず)
  • RDotNet.NativeLibrary.dll
  • RDotNet.dll

コンパイル後のDLLを32ビットで動作させるには次の記事を参考にする。
64bitOSでAnyCPUでコンパイルした32bitプロセスを動かす

2013/11/30 訂正:RDotNet.dll とRDotNet.NativeLibray.dllはCPU Anyでビルドされているので上記の作業は不要


2. 1のDLLと同じパスにExcelDNAのDistributionに入っているExcelDna.xllをコピーして「RNET.xll」と名称を変更する。

3.RNet.dnaとして次のファイルを作成する。
 BOMなしのUTF8で保存しておく。

<DnaLibrary RuntimeVersion="v4.0" Name="R.NET" Description="R.NETをExcelから動作させる試験" Language="CS">
<Reference Path="RDotNet.NativeLibrary.dll"  />
<Reference Path="RDotNet.dll"  />
<![CDATA[
using System;
using System.IO;
using System.Linq;
using RDotNet;

namespace CSLib
{
    public class CSLib
    {
        static REngine engine = null;
        static CSLib()
        {
            var envPath = Environment.GetEnvironmentVariable("PATH");
            var rBinPath = @"C:\Program Files\R\R-3.0.2\bin\i386";
            Environment.SetEnvironmentVariable("PATH", envPath + Path.PathSeparator + rBinPath);
            engine = REngine.CreateInstance("RDotNet");
            engine.Initialize();
        }
       
        public static double[] MyRnorm(int number)
        {
            return (engine.Evaluate("rnorm(" + number + ")").AsNumeric().ToArray<double>());
        }

    }
}
]]>

</DnaLibrary>
4.あとは「R.NETとExcel-DNAでRで動くExcelアドインを作る」と同じ

[PR]
by mima_ita | 2013-11-30 20:49 | R
<< .NETにおける64ビットプロ... VisualStdio2012... >>



実験ですお
検索
カテゴリ
最新の記事
.NET4.5におけるasy..
at 2014-07-02 00:46
.NETでTwitterを検..
at 2014-06-29 00:49
Redmineのプラグインで..
at 2014-06-28 03:29
IO.popenのwrite..
at 2014-06-28 03:25
RedmineのWikiでU..
at 2014-06-28 03:16
以前の記事
最新のトラックバック
その他のジャンル
ブログパーツ