このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
rowfun
table または timetable の行への関数の適用
説明
は、1 つ以上の B
= rowfun(func
,A
,Name,Value
)Name,Value
ペア引数で指定された追加のオプションを使用して、関数 func
を table A
の各行に適用します。
たとえば、関数 func
に渡す変数と func
の呼び出し方法を指定できます。
例
行に対する単出力の関数の適用
5 行 2 列の table A
の各行に関数 hypot
を適用して、変数 x
と y
の間の最短距離を求めます。
数値データの 2 つの変数をもつ table A
を作成します。
rng('default')
x = randi(10,[5,1]);
y = randi(10,[5,1]);
A = table(x,y)
A=5×2 table
x y
__ __
9 1
10 3
2 6
10 10
7 10
A
の各行に関数 hypot
を適用します。関数 hypot
は 2 つの入力をとり、1 つの出力を返します。
B = rowfun(@hypot,A,'OutputVariableNames','z')
B=5×1 table
z
______
9.0554
10.44
6.3246
14.142
12.207
B
は table です。
関数の出力 B
を入力 table A
に追加します。
[A B]
ans=5×3 table
x y z
__ __ ______
9 1 9.0554
10 3 10.44
2 6 6.3246
10 10 14.142
7 10 12.207
行に対する複数出力の関数の適用
幾何ブラウン運動モデルを定義し、パラメーターの範囲に適用します。
以下のコードを含む gbmSim.m
という名前のファイルに関数を作成します。
% Copyright 2015 The MathWorks, Inc. function [m,mtrue,s,strue] = gbmSim(mu,sigma) % Discrete approximation to geometric Brownian motion % % [m,mtrue,s,strue] = gbmSim(mu,sigma) computes the % simulated mean, true mean, simulated standard deviation, % and true standard deviation based on the parameters mu and sigma. numReplicates = 1000; numSteps = 100; y0 = 1; t1 = 1; dt = t1 / numSteps; y1 = y0*prod(1 + mu*dt + sigma*sqrt(dt)*randn(numSteps,numReplicates)); m = mean(y1); s = std(y1); % Theoretical values mtrue = y0 * exp(mu*t1); strue = mtrue * sqrt(exp(sigma^2*t1) - 1); end
gbmSim
は、mu
と sigma
の 2 つの入力を受け入れ、m
、mtrue
、s
および strue
の 4 つの出力を返します。
ブラウン運動モデルに入力するパラメーターを含む table params
を定義します。
mu = [-.5; -.25; 0; .25; .5]; sigma = [.1; .2; .3; .2; .1]; params = table(mu,sigma)
params = 5x2 table mu sigma _____ _____ -0.5 0.1 -0.25 0.2 0 0.3 0.25 0.2 0.5 0.1
table params
の行に関数 gbmSim
を適用します。
stats = rowfun(@gbmSim,params,... 'OutputVariableNames',... {'simulatedMean' 'trueMean' 'simulatedStd' 'trueStd'})
stats = 5x4 table simulatedMean trueMean simulatedStd trueStd _____________ ________ ____________ ________ 0.60501 0.60653 0.05808 0.060805 0.77916 0.7788 0.161 0.15733 1.0024 1 0.3048 0.30688 1.2795 1.284 0.25851 0.25939 1.6498 1.6487 0.16285 0.16529
'OutputVariableNames'
の名前と値のペアの引数で指定された 4 つの変数名は、rowfun
が 4 つの出力を gbmSim
から取得しなければならないことを示します。指定する出力変数名の数を少なくして、gbmSim
から返される出力を減らすことができます。
関数の出力 stats
を入力 params
に追加します。
[params stats]
ans = 5x6 table mu sigma simulatedMean trueMean simulatedStd trueStd _____ _____ _____________ ________ ____________ ________ -0.5 0.1 0.60501 0.60653 0.05808 0.060805 -0.25 0.2 0.77916 0.7788 0.161 0.15733 0 0.3 1.0024 1 0.3048 0.30688 0.25 0.2 1.2795 1.284 0.25851 0.25939 0.5 0.1 1.6498 1.6487 0.16285 0.16529
行のグループへの関数の適用
table A
を作成します。ここで、g
はグループ化変数です。
rng('default')
g = randi(3,[15,1]);
x = rand([15,1]);
y = rand([15,1]);
A = table(g,x,y)
A=15×3 table
g x y
_ ________ ________
3 0.14189 0.70605
3 0.42176 0.031833
1 0.91574 0.27692
3 0.79221 0.046171
2 0.95949 0.097132
1 0.65574 0.82346
1 0.035712 0.69483
2 0.84913 0.3171
3 0.93399 0.95022
3 0.67874 0.034446
1 0.75774 0.43874
3 0.74313 0.38156
3 0.39223 0.76552
2 0.65548 0.7952
3 0.17119 0.18687
無名関数 func
を定義して、x
と y
の平均の差を計算します。
func = @(x,y) mean(x-y);
グループ化変数 g
で定義されたグループ 1
、2
および 3
の変数間で平均の差を求めます。
B = rowfun(func,A,... 'GroupingVariable','g',... 'OutputVariableName','MeanDiff')
B=3×3 table
g GroupCount MeanDiff
_ __________ ________
1 4 0.032744
2 3 0.41822
3 8 0.14656
変数 GroupCount
は、各グループの A
の行数を示します。
入力引数
func
— 関数
関数ハンドル
関数。関数ハンドルとして指定します。関数は、ファイルで定義するか、無名関数として定義できます。func
が複数の関数ファイルに対応している場合 (つまり、func
がオーバーロードされた関数セットを表す場合)、MATLAB® は入力引数のクラスに基づいて呼び出す関数を決定します。
func
は、size(A,2)
個の入力数まで受け入れることができます。既定の設定では、rowfun
は func
の最初の出力を返します。複数の出力を func
から返すには、'NumOutputs'
または名前と値のペアの引数 'OutputVariableNames'
を使用します。
例: func = @(x,y) x.^2+y.^2;
は 2 つの入力をとり、二乗和を求めます。
A
— 入力テーブル
table | timetable
入力テーブル。table または timetable として指定します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: 'InputVariables',2
は、A
の 2 番目の変数のみを func
への入力として使用します。
InputVariables
— func
に渡す A
の変数を選択する指定子
正の整数 | 正の整数のベクトル | string 配列 | 文字ベクトル | 文字ベクトルの cell 配列 | pattern
スカラー | logical ベクトル | 関数ハンドル
func
に渡す A
の変数を選択する指定子。'InputVariables'
と、正の整数、正の整数のベクトル、string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern
スカラー、logical ベクトル、または関数ハンドルのいずれかで構成されるコンマ区切りのペアとして指定します。
'InputVariables'
を関数ハンドルとして指定する場合、この関数ハンドルは logical スカラーを返さなければならず、rowfun
は関数が 1
(true
) を返した A
内の変数のみを渡します。
GroupingVariables
— 行のグループを定義する A
内の 1 つ以上の変数
正の整数 | 正の整数のベクトル | string 配列 | 文字ベクトル | 文字ベクトルの cell 配列 | pattern
スカラー | logical ベクトル
行のグループを定義する A
内の 1 つ以上の変数。'GroupingVariables'
と、正の整数、正の整数のベクトル、string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern
スカラー、または logical ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。
'GroupingVariables'
の値はどの table 変数がグループ化変数であるかを指定するもので、そのデータ型を指定するものではありません。グループ化変数は数値として指定するか、categorical
、calendarDuration
、datetime
、duration
、logical
、または string
のデータ型をもつことができます。
A
内で同じグループ化変数をもつ行は同じグループに属します。rowfun
は func
を A
の各行に個別に適用するのではなく、行のグループごとに適用します。出力 B
には、グループごとに 1 つの行が含まれます。
いずれかのグループ化変数に NaN
または欠損値 (NaT
、未定義の categorical 値、欠損 string など) が含まれている場合、それに対応する行はどのグループにも属さず、出力から除外されます。
行ラベルはグループ化変数にすることができます。行ラベルのみ、A
内の 1 つ以上の変数、または行ラベルと変数を同じグループにすることができます。
A
が table の場合、ラベルは行名です。A
が timetable の場合、ラベルは行時間です。
出力 B
には、入力 A
の行のグループごとに 1 つの行があります。
'OutputFormat','uniform'
または'OutputFormat','cell'
を指定すると、func
が適用された入力 table 変数に対応する 1 つ以上の列が出力に含まれます。'OutputFormat','table'
または'OutputFormat','timetable'
を指定すると、出力には以下が含まれます。func
が適用された入力 table 変数に対応する 1 つ以上の変数。グループ化変数に対応する変数。
新しい変数
GroupCount
。その値は、各グループ内の入力A
の行数です。
SeparateInputs
— 個々の入力で func
を呼び出すかどうかを示すインジケーター
true
(既定値) | false
| 1
| 0
個々の入力で func
を呼び出すかどうかを示すインジケーター。'SeparateInputs'
と、true
、false
、1
または 0
で構成されるコンマ区切りのペアとして指定します。
|
これは既定の動作です。 |
|
|
ExtractCellContents
— セル変数からの値を func
に渡すかどうかを示すインジケーター
false
(既定値) | true
| 0
| 1
セル変数からの値を func
に渡すかどうかを示すインジケーター。'ExtractCellContents'
と false
、true
、0
または 1
で構成されるコンマ区切りのペアとして指定します。
|
グループ化された計算の場合は、セル変数の各グループ内の値は垂直連結を許可しなければなりません。 |
|
これは既定の動作です。 |
OutputVariableNames
— func
の出力の変数名
文字ベクトル | 文字ベクトルの cell 配列 | string 配列
func
の出力の変数名。'OutputVariableNames'
と、空ではない一意の名前をもつ文字ベクトル、文字ベクトルの cell 配列、または string 配列で構成されるコンマ区切りのペアとして指定します。名前の数は、意図する func
の出力数と等しくなければなりません。
さらに、変数名は有効な MATLAB 識別子でなければなりません。有効な MATLAB 識別子が変数名として使用できない場合、MATLAB は {'Var1' ... 'Var
の形式で N
'}N
個の文字ベクトルをもつ cell 配列を使用します。ここで、N
は変数の数です。関数 isvarname
を使用して有効な MATLAB 変数名を確認できます。
NumOutputs
— func
からの出力数
0
| 正の整数
func
からの出力数。'NumOutputs'
と 0
または正の整数で構成されるコンマ区切りのペアとして指定します。整数は func
からの可能な出力数以下でなければなりません。
例: 'NumOutputs',2
によって、rowfun
は 2 つの出力を使用して func
を呼び出します。
OutputFormat
— B
の形式
'auto'
(既定値) | 'table'
| 'timetable'
| 'uniform'
| 'cell'
B
の形式。'OutputFormat'
と、'auto'
、'table'
、'timetable'
、'uniform'
、または 'cell'
の値で構成されるコンマ区切りのペアとして指定します。
|
|
|
|
|
|
|
|
|
|
ErrorHandler
— func
が失敗した場合に呼び出す関数
関数ハンドル
func
が失敗した場合に呼び出す関数。'ErrorHandler'
と関数ハンドルで構成されるコンマ区切りのペアとして指定します。この関数を定義して、エラーを再スローするか、関数 func
に対して有効な出力を返すようにします。
MATLAB は、以下の 2 つの入力引数を使用して、指定されたエラー処理関数を呼び出します。
構造体には以下のフィールドがあります。
identifier
エラー識別子。
message
エラー メッセージ テキスト。
index
エラーが発生した行またはグループ インデックス。
エラー発生時の関数
func
への入力引数の集合。
以下に例を示します。
function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message);
A = NaN; B = NaN;
出力引数
バージョン履歴
R2013b で導入R2023a: 名前と値の引数 'OutputFormat'
で値として 'auto'
を受け取り可能
名前と値の引数 'OutputFormat'
で値として 'auto'
を受け取ることができます。この値は既定値です。これにより、rowfun
は、入力 A
のデータ型に一致するデータ型をもつ出力を返します。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)