R.NET、クロージャー型の展開について
はじめまして、VisualBasic.net(4.0),Windows7上のアプリケーションからRの操作を試みています。
Rとの接続にはCodePlex上で公開されているR.NET(https://rdotnet.codeplex.com/)を使用しています。
※まずテストの為以下のようなコードを実行しました。
Imports RDotNet
Module Module1
Sub Main()
Dim engine = REngine.GetInstance()
Dim obj2 As RDotNet.Closure
obj2 = engine.Evaluate("cat").AsFunction
End Sub
End Module
これを実行するとRDotNet.Closure型の変数obj2にはRのコンソール上単にcat入力した場合の結果、つまり関数catの情報が格納されているはずだと考えています。
※次に例としてRコンソール上でcatを実行した結果を提示します。
> cat
function (..., file = "", sep = " ", fill = FALSE, labels = NULL,
append = FALSE)
{
if (is.character(file))
if (file == "")
file <- stdout()
else if (substring(file, 1L, 1L) == "|") {
file <- pipe(substring(file, 2L), "w")
on.exit(close(file))
}
else {
file <- file(file, ifelse(append, "a", "w"))
on.exit(close(file))
}
.Internal(cat(list(...), file, sep, fill, labels, append))
}
<bytecode: 0x000000000a862060>
<environment: namespace:base>
>
※そしてサンプルコードの実行時のVisualStudioでClosureのウォッチ式の結果を提示します。
引数の情報つまりFunctionの()内の部分に関してはClosureクラスのArgumentsプロパティにペア・リストの形で格納されておりFor eachで取り出すことが出来ました。
しかしそれ以降の関数本体の定義部分がClosureクラスのどこに格納されているのかわかりません。
ClosureクラスにはBodyプロパティがありましたが型がバイトコードになっていてよくわかりませんでした。
どなたか関数の本体部分の格納箇所が分かる方、もしくはこういった場合VisualStudio上(2010)で確認方法をご存知の方がおられましたらお助け出来ませんでしょうか?
よろしくお願いします。