RLink`
RLink`

RFunction

RFunction[code]

code を使って,Rのワークスペース中の関数を定義し,Rのワークスペースで定義されたR言語関数(これも頭部RFunctionを持つ)への参照(ハンドル)を返す.

RFunction[type,RCode[code],refIndex,attributes ]

Rのワークスペースで定義されたR関数への参照を表す.

RFunction[type,RCode[code],refIndex,attributes ][args]

RFunctionオブジェクトによって表されたR関数を引数 args に対して呼び出す.

詳細とオプション

  • 現行の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の最初の数項目の位置を返す関数を定義する:

これでRでランダムなサンプルを生成することができる:

そしてこれをテストすることができる:

あるいは,Wolfram言語からのデータを使うことができる:

関数の定義を変数に割り当てずに直接使うこともできる:

以下は,ベクトルと別のテスト関数を取る高次数関数を定義し,テスト関数(Wolfram言語のSelectに類似するもの)の条件を満足するベクトル要素から選ぶ:

これを使う.例えば,リスト(ベクトル)から正の数を選ぶ:

おもしろい例題  (1)

カスタムのSelectのような操作をリストに対して行う(リストは操作にハードコードされている)クロージャの生成器を作成する.ベクトルを埋め込み,テスト基準がこのベクトルにフィルターを掛けることを期待する関数を返す.まず,クロージャの生成器を作成する:

特定のベクトルに対してクロージャを生成する:

これを使うことができる.このクロージャは,別の(テスト)関数をパラメータとして認めるので,これは同時に高次数関数である.これを使うには,まずテスト関数を定義する:

この関数はもちろんWolfram言語側ではそれだけでテストすることもできる:

クロージャに対するパラメータとしてこの関数を使うことができる:

変数に関数を保存せずに,直接形を使うこともできる:

この形は使うと,この関数への参照を呼び出すたびに,テスト関数の余分のコピーが作成される:

Wolfram Research (2012), RFunction, Wolfram言語関数, https://reference.wolfram.com/language/RLink/ref/RFunction.html.

テキスト

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

BibTeX

@misc{reference.wolfram_2024_rfunction, author="Wolfram Research", title="{RFunction}", year="2012", howpublished="\url{https://reference.wolfram.com/language/RLink/ref/RFunction.html}", note=[Accessed: 21-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_rfunction, organization={Wolfram Research}, title={RFunction}, year={2012}, url={https://reference.wolfram.com/language/RLink/ref/RFunction.html}, note=[Accessed: 21-November-2024 ]}