RFunction
RFunction[code]
code を使って,Rのワークスペース中の関数を定義し,Rのワークスペースで定義されたR言語関数(これも頭部RFunctionを持つ)への参照(ハンドル)を返す.
RFunction[type,RCode[code],refIndex,attributes ]
Rのワークスペースで定義されたR関数への参照を表す.
詳細とオプション
- 現行のRLinkセッションの前に関数が定義されていない場合には,RFunction[code]はRのワークスペースのR言語コードの文字列 code によって定義された関数を構築し,より長い形式のRFunction[type,RCode[code],refIndex,attributes]を持つ,この関数への不明瞭なWolfram言語参照を返す.コード code が有効なR関数を定義しない場合には,$Failedが返される.
- より長い形式のRFunction[type,RCode[code],refIndex,attributes]は,R関数のハンドルのFullFormを表し,これはRのワークスペースで定義された関数への不明瞭なWolfram言語参照である.通常この形式は,手作業で構築された関数よりもむしろ,REvaluate[code],RFunction[code]等の関数を呼び出した結果として返される.
- type のパラメータは,"closure"あるいは"builtin"でよい.前者は,問題になっているR関数がそれ自体R言語で書かれたことを通常示し,後者は,この関数が中核となるRの組込み関数の一つであることを意味する.
- RCodeラッパー内の code パラメータは,関数のコードを表す.参照がRFunction[code]を呼び出した結果作成された場合には,RCodeのコードは厳密にこのR関数を定義するのにつかわれたコードである.参照がREvaluateを呼び出した結果作成された場合には,RCode内のコードは,問題になっているR関数のいわゆるdeparseされた(Rのdeparse関数を使って得られた)定義である.
- refIndex パラメータは,正の整数あるいはAutomaticでよい.前者の場合は,REvaluateへの呼出しによって得られた参照に対応する.後者の場合は,RFunction[code]への呼出しによって得られた参照に対応する.
- 整数である refIndex を持つ参照は通常,単一のRLinkセッションにおいてのみ有効である.これに対して,Automaticに設定された refIndex を持つ参照は,WolframシステムあるいはRLinkセッションを通じて有効である.
- 関数の属性 attributes は,頭部RAttributesを持つ.
例題
すべて開くすべて閉じる例 (8)
まず,パッケージをロードし,Rのランタイムをインストールしなければならない:
以下は,上の関数への参照がRLink内部でどのように表されているかを示す:
この式は,Rのワークスペースで定義された,R言語関数(この場合は関数"sin")への不明瞭な参照を表す.
引数を持たない関数への参照を構築する.この関数は,0と1の間に一様に分布する単一の乱数を生成する関数で,すぐに呼び出される:
R関数の多くはベクトル化されているので,これを文字列のリストに使うこともできる:
以下のコードは,少なくとも与えられた長さと同じ長さを持つ1の実行において,1の最初の数項目の位置を返す関数を定義する:
あるいは,Wolfram言語からのデータを使うことができる:
以下は,ベクトルと別のテスト関数を取る高次数関数を定義し,テスト関数(Wolfram言語のSelectに類似するもの)の条件を満足するベクトル要素から選ぶ:
おもしろい例題 (1)
カスタムのSelectのような操作をリストに対して行う(リストは操作にハードコードされている)クロージャの生成器を作成する.ベクトルを埋め込み,テスト基準がこのベクトルにフィルターを掛けることを期待する関数を返す.まず,クロージャの生成器を作成する:
これを使うことができる.このクロージャは,別の(テスト)関数をパラメータとして認めるので,これは同時に高次数関数である.これを使うには,まずテスト関数を定義する:
この関数はもちろんWolfram言語側ではそれだけでテストすることもできる:
テキスト
Wolfram Research (2012), RFunction, Wolfram言語関数, https://reference.wolfram.com/language/RLink/ref/RFunction.html.
CMS
Wolfram Language. 2012. "RFunction." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/RLink/ref/RFunction.html.
APA
Wolfram Language. (2012). RFunction. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/RLink/ref/RFunction.html