ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

varfun

テーブル変数への関数の適用

構文

  • B = varfun(func,A)
  • B = varfun(func,A,Name,Value)

説明

B = varfun(func,A) は、関数 func をテーブル A の各変数に個別に適用し、結果をテーブル B で返します。

関数 func は入力引数 を 1 つ取り、この関数が呼び出されるたびに、同じ行数の配列を返さなければなりません。出力テーブル B{:,i}i 番目の変数は func(A{:,i}) と等しくなります。

B = varfun(func,A,Name,Value) は、1 つまたは複数の Name,Value ペア引数で指定された追加のオプションを使用して、関数 func をテーブル A の各変数に個別に適用します。

たとえば、関数にどの変数を渡すかを指定できます。

すべて折りたたむ

要素単位関数の適用

すべての要素の二乗を求める要素単位関数を定義し、テーブルの変数に適用します。

数値変数を含むテーブルを定義します。

A = table([0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A = 

    Var1     Var2 
    _____    _____

     0.71     0.23
    -2.05     0.12
    -0.35    -0.18
    -0.82     0.23
     1.57     0.41

入力の二乗を求める無名関数を定義します。

func = @(x) x.^2;

テーブル A のすべての変数に関数を適用します。

B = varfun(func,A)
B = 

    Fun_Var1    Fun_Var2
    ________    ________

    0.5041      0.0529  
    4.2025      0.0144  
    0.1225      0.0324  
    0.6724      0.0529  
    2.4649      0.1681  

B の変数には、関数と A の変数名に基づいて名前が付けられます。

ベクトルからスカラーを返す関数の適用

5 行 2 列のテーブルで、各変数の平均値を計算します。

数値変数を含むテーブルを定義します。

A = table([0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A = 

    Var1     Var2 
    _____    _____

     0.71     0.23
    -2.05     0.12
    -0.35    -0.18
    -0.82     0.23
     1.57     0.41

入力の平均値を求める無名関数を定義します。

func = @mean;

func は既存の MATLAB® 関数を使用して、演算を定義します。

テーブル A のすべての変数に関数を適用します。

B = varfun(func,A)
B = 

    mean_Var1    mean_Var2
    _________    _________

    -0.188       0.162    

B は、各変数からの平均値を含むテーブルです。テーブルではなく数値ベクトルを返すには、B = varfun(func,A,'OutputFormat','uniform') を使用します。

変数内のグループへの関数の適用

テーブル A で変数のグループ単位の平均値を計算し、テーブル B の行として返します。

1 つの変数が複数のグループを定義するテーブルを作成します。

A = table({'test2';'test1';'test2';'test3';'test1'},...
    [0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A = 

     Var1      Var2     Var3 
    _______    _____    _____

    'test2'     0.71     0.23
    'test1'    -2.05     0.12
    'test2'    -0.35    -0.18
    'test3'    -0.82     0.23
    'test1'     1.57     0.41

入力の平均値を求める無名関数を定義します。

func = @mean;

func は既存の MATLAB 関数を使用して、演算を定義します。

Var1 によって定義されるデータのグループごとに、関数を適用します。

B = varfun(func,A,'GroupingVariables','Var1')
B = 

              Var1      GroupCount    mean_Var2    mean_Var3
             _______    __________    _________    _________

    test1    'test1'    2             -0.24        0.265    
    test2    'test2'    2              0.18        0.025    
    test3    'test3'    1             -0.82         0.23    

B は、グループ化変数と GroupCount という変数に基づく行名を含みます。この変数は、そのグループのテーブル A からのエントリ数を示しています。

入力引数

すべて折りたたむ

func — 関数関数ハンドル

関数。関数ハンドルとして指定します。関数は、ファイルで定義するか、無名関数として定義できます。func が複数の関数ファイルに対応している場合 (つまり、func がオーバーロードされた関数セットを表す場合)、MATLAB は入力引数のクラスに基づいて呼び出す関数を決定します。

関数 func が入力引数を 1 つ取り、この関数が呼び出されるたびに異なる行数の配列を返す場合、'OutputFormat','cell' 名前と値のペアの引数を使用します。それ以外の場合、func は、同じ行数の配列を返さなければなりません。

例: func = @(x) x.^2; は、入力の各要素の二乗を計算します。

A — 入力テーブルテーブル

テーブルとして指定される入力テーブル。

名前/値のペアの引数

オプションの Name,Value 引数のペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数個の名前と値のペアの引数を、任意の順番で指定できます。

例: 'InputVariables',2 は、A の 2 番目の変数のみを func への入力として使用します。

'InputVariables'func に渡す A の変数正の整数 | 正の整数のベクトル | 変数名 | 変数名のセル配列 | 論理ベクトル | ...

func に渡す A の変数。'InputVariables' と、正の整数、正の整数のベクトル、変数名、変数名のセル配列、論理ベクトルまたは論理スカラーを返す無名関数のいずれかで構成されるコンマ区切りのペアとして指定します。'InputVariables' を論理スカラーを返す無名関数として指定すると、varfunA の変数のみを渡し、指定された関数は 1 (true) を返します。

'GroupingVariables' — 行のグループを定義する A 内の 1 つまたは複数の変数正の整数 | 正の整数のベクトル | 変数名 | 変数名のセル配列 | 論理ベクトル

行のグループを定義する A の 1 つまたは複数の変数。'GroupingVariables' と、正の整数、正の変数のベクトル、変数名、変数名のセル配列または論理ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。

グループ化変数には、数値ベクトル、論理ベクトル、文字列 (または文字配列)、文字列のセル配列またはカテゴリカル ベクトルのいずれかを指定できます。A 内でグループ化変数の値が同じ行は、同じグループに属します。varfunfunc を各変数全体に適用するのではなく、A の各変数内の行グループごとに適用します。

'OutputFormat','uniform' または 'OutputFormat','cell' を指定する場合、出力 B には、グループごとに 1 つの行が存在します。'OutputFormat','table' を指定した場合、func からの出力サイズは、各グループに対応する B の行数を決定します。B の複数の行が 1 つのグループに対応する場合、varfun は行の名前に一意の識別子を追加します。

'OutputFormat'B の形式'table' (既定値) | 'uniform' | 'cell'

B の形式。'OutputFormat' と文字列 'uniform''table' または 'cell' で構成されるコンマ区切りのペアとして指定します。

'table'

varfunA の各変数 (または 'InputVariables' で指定した各変数) に 1 つの変数を含むテーブルを返します。グループ化された計算の場合、B にはグループ化変数も含まれます。

'table' では、A の異なる変数に対して、異なるサイズまたはデータ型の値を返す関数を使用できます。ただし、グループ化解除された計算の場合、func は呼び出されるたびに同じ行数の配列を返さなければなりません。グループ化された計算の場合、func は指定されたグループに対して呼び出されるたびに、同じ行数の値を返さなければなりません。

これは既定の出力形式です。

'uniform'

varfun は、値をベクトルに連結します。func は、呼び出されるたびに同じデータ型をもつスカラーを返さなければなりません。

'cell'

varfunB をセル配列として返します。'cell' では、異なるサイズまたはデータ型の値を返す関数を使用できます。

'ErrorHandler'func が失敗した場合に呼び出す関数関数ハンドル

func が失敗した場合に呼び出す関数。'ErrorHandler' と関数ハンドルで構成されるコンマ区切りのペアとして指定します。この関数を定義して、エラーを再スローするか、関数 func に対して有効な出力を返すようにします。

MATLAB は、以下の 2 つの入力引数を使用して、指定されたエラー処理関数を呼び出します。

  • 構造体には以下のフィールドがあります。

    identifier

    エラー識別子。

    message

    エラー メッセージ テキスト。

    index

    エラーが発生した変数のインデックス。

    name

    エラーが発生した変数の名前。

  • エラー発生時の関数 func への入力引数の集合。

以下に例を示します。

function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message)
A = NaN; B = NaN;

出力引数

すべて折りたたむ

B — 出力テーブルテーブル

テーブルとして返される出力テーブル。テーブルには、説明、変数単位、変数名、行名などのメタデータを保存できます。詳細は、「Table Properties」を参照してください。

この情報は役に立ちましたか?