Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

rowfun

테이블 또는 타임테이블 행에 함수 적용

설명

B = rowfun(func,A)는 함수 func을 테이블 또는 타임테이블 A의 각 행에 적용하고 결과를 테이블 또는 타임테이블 B에 반환합니다.

funcsize(A,2) 입력값을 허용합니다.

A가 타임테이블이고 func 함수가 행 그룹에서 데이터를 집계하는 경우, rowfunA의 각 행 그룹의 첫 번째 행 시간값을 B의 대응하는 행 시간값으로 할당합니다. B를 행 시간값이 없는 테이블로 반환하려면 'OutputFormat''table'로 지정하십시오.

예제

B = rowfun(func,A,Name,Value)는 함수 func을 하나 이상의 Name,Value 쌍 인수로 추가 옵션을 지정하여 테이블 A의 각 행에 적용합니다.

예를 들어, 함수 func으로 전달할 변수와 func을 호출하는 방식을 지정할 수 있습니다.

예제

모두 축소

함수 hypot을 5×2 테이블 A의 각 행에 적용하여 변수 x와 변수 y 간의 최단 거리를 구합니다.

숫자형 데이터로 구성된 두 개의 변수를 갖는 테이블 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

함수 hypotA의 각 행에 적용합니다. 함수 hypot은 두 개의 입력값을 받아 하나의 출력값을 반환합니다.

B = rowfun(@hypot,A,'OutputVariableNames','z')
B=5×1 table
      z   
    ______

    9.0554
     10.44
    6.3246
    14.142
    12.207

B는 테이블입니다.

함수 출력값 B를 입력 테이블 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

기하 브라운 운동(Brownian motion) 모델을 정의하고 파라미터 범위에 적용합니다.

다음 코드를 포함하는 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은 두 개의 입력값 musigma를 받고, 네 개의 출력값 m, mtrue, s, strue를 반환합니다.

브라운 운동 모델에 입력할 파라미터를 포함하는 테이블 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 

함수 gbmSim을 테이블 params의 행에 적용합니다.

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' 이름-값 쌍의 인수로 지정된 네 개의 변수 이름은 rowfungbmSim에서 네 개의 출력값을 얻어야 함을 나타냅니다. 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

테이블 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를 정의하여 xy 간의 평균 차이를 계산합니다.

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가 일련의 오버로드된 함수를 나타내는 경우) MATLAB®은 입력 인수의 클래스에 따라 어떤 함수를 호출할지를 결정합니다.

funcsize(A,2)개의 입력값만 허용할 수 있습니다. 기본적으로, rowfunfunc의 첫 번째 출력을 반환합니다. func의 출력값을 두 개 이상 반환하려면 'NumOutputs' 또는 'OutputVariableNames' 이름-값 쌍의 인수를 사용하십시오.

예: func = @(x,y) x.^2+y.^2;에서는 두 개의 입력값을 가져와서 제곱의 합을 구합니다.

입력 테이블로, table형이나 timetable형으로 지정됩니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'InputVariables',2에서는 A의 두 번째 변수만 func에 대한 입력값으로 사용합니다.

func에 전달할 A의 변수를 선택하기 위한 지정자로, 'InputVariables'와 함께 양의 정수, string형 배열, 양의 정수로 구성된 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, pattern 스칼라, 논리형 벡터 또는 함수 핸들이 쉼표로 구분되어 지정됩니다.

'InputVariables'를 함수 핸들로 지정하는 경우, 이것은 논리형 스칼라를 반환해야 하고, rowfunA에서 함수가 1(true)을 반환하는 변수만 전달합니다.

행 그룹을 정의하는 하나 이상의 A의 변수로, 'GroupingVariables'와 함께 양의 정수, string형 배열, 양의 정수로 구성된 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, pattern 스칼라 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다.

'GroupingVariables'의 값은 그룹화 변수의 데이터형이 아니라 어떤 테이블 변수가 그룹화 변수인지를 지정합니다. 그룹화 변수는 숫자형이거나 categorical, calendarDuration, datetime, duration, logical 또는 string 데이터형일 수 있습니다.

A에서 동일한 그룹화 변수 값을 가지는 행은 동일한 그룹에 속합니다. rowfunfuncA의 각 행에 개별적으로 적용하지 않고, 각 행 그룹에 적용합니다. 출력값 B는 각 그룹에 대한 하나의 행을 포함합니다.

그룹화 변수가 NaN 또는 누락값(예: NaT, 정의되지 않은 categorical형 값 또는 누락값인 string형)을 포함하는 경우, 대응하는 행은 어떤 그룹에도 속하지 않고 출력값에서 제외됩니다.

행 레이블은 그룹화 변수일 수 있습니다. 사용자는 행 레이블만을 기준으로, 또는 하나 이상의 A의 변수를 기준으로, 또는 행 레이블과 변수를 함께 기준으로 하여 그룹화할 수 있습니다.

  • A가 테이블인 경우 레이블은 행 이름입니다.

  • A가 타임테이블인 경우 레이블은 행 시간값입니다.

출력값 B는 입력값 A의 각 행 그룹에 대한 하나의 행을 포함합니다.

  • 'OutputFormat','uniform' 또는 'OutputFormat','cell'을 지정하는 경우 출력값은 func가 적용된 입력 테이블 변수에 대응하는 하나 이상의 열을 가집니다.

  • 'OutputFormat','table' 또는 'OutputFormat','timetable'을 지정하는 경우 출력값은 다음을 포함합니다.

    • func가 적용된 입력 테이블 변수에 대응하는 하나 이상의 변수.

    • 그룹화 변수에 대응하는 변수.

    • 값이 각 그룹에 있는 입력값 A의 행 개수인 새로운 변수 GroupCount.

개별 입력값으로 func를 호출하는 여부 표시자로, 'SeparateInputs'와 함께 true, false, 1, 0 중 하나가 쉼표로 구분되어 지정됩니다.

true

func는 개별 입력값을 예상합니다. rowfun은 각 데이터 변수에 대해 하나의 인수를 사용해 size(A,2) 입력값으로 func를 호출합니다.

이는 디폴트 동작입니다.

false

func는 모든 입력값을 포함하는 하나의 벡터를 예상합니다. rowfunA의 각 행에 있는 값을 결합하여 func에 대한 입력 벡터를 만듭니다.

셀형 변수의 값을 func로 전달하는 여부 표시자로, 'ExtractCellContents'와 함께 false, true, 0, 1 중 하나가 쉼표로 구분되어 지정됩니다.

true

rowfun은 데이터형이 cellA의 변수의 내용을 추출해 셀이 아니라 그 셀의 값을 func로 전달합니다.

그룹화 계산의 경우, 셀형 변수의 각 그룹 내 값은 세로 결합이 가능해야 합니다.

false

rowfun은 데이터형이 cellA의 변수의 셀을 func로 전달합니다.

이는 디폴트 동작입니다.

func의 출력값에 대한 변수 이름으로, 'OutputVariableNames'와 함께 비어 있지 않은 고유한 이름을 갖는 문자형 벡터, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열이 쉼표로 구분되어 지정됩니다. 이름의 개수는 func에서 필요한 출력값의 개수와 같아야 합니다.

또한, 변수 이름은 유효한 MATLAB 식별자여야 합니다. 유효한 MATLAB 식별자를 변수 이름으로 사용할 수 없는 경우 MATLAB에서는 {'Var1' ... 'VarN'} 형식의 N개 문자형 벡터로 구성된 셀형 배열을 사용합니다. 여기서 N은 변수의 개수입니다. 유효한 MATLAB 변수 이름은 함수 isvarname을 사용하여 확인할 수 있습니다.

func에서 얻는 출력값 개수로, 'NumOutputs'와 함께 0이나 양의 정수가 쉼표로 구분되어 지정됩니다. 정수는 func에서 가능한 출력값 개수보다 작거나 같아야 합니다.

예: 'NumOutputs',2를 사용하면 rowfun이 두 개의 출력값으로 func을 호출합니다.

B의 형식으로, 'OutputFormat'과 함께 값 'table', 'uniform', 'cell' 중 하나가 쉼표로 구분되어 지정됩니다.

'table'

rowfunfunc의 각 출력값에 대해 하나의 변수를 갖는 테이블을 반환합니다. 그룹화 계산의 경우, B에는 그룹화 변수도 포함됩니다.

'table'을 사용하면 다른 크기나 데이터형의 값을 반환하는 함수를 사용할 수 있습니다. 그러나, 그룹화되지 않은 계산의 경우 func에서 생성되는 모든 출력값에는 func 함수가 호출될 때마다 하나의 행이 있어야 합니다. 그룹화된 계산의 경우, func에서 생성되는 모든 출력값에는 같은 수의 행이 있어야 합니다.

이것은 디폴트 출력 형식입니다.

'timetable'

rowfunA의 각 변수(또는 'InputVariables'에서 지정한 각 변수)에 대해 하나의 변수를 갖는 타임테이블을 반환합니다. 그룹화 계산의 경우, B에는 그룹화 변수도 포함됩니다.

rowfunA의 행 시간값에서 B의 행 시간값을 만듭니다. B에 할당된 행 시간값이 func를 사용하여 수행된 계산 맥락에서 타당하지 않는 경우, 출력 형식을 'OutputFormat','table'로 지정하십시오.

A가 타임테이블인 경우 이것은 디폴트 출력 형식입니다.

'uniform'

rowfunfunc에서 반환된 값을 벡터에 결합합니다. func에서 생성되는 모든 출력값은 동일한 데이터형의 스칼라여야 합니다.

'cell'

rowfunB를 셀형 배열로 반환합니다. 'cell'을 사용하면 다른 크기나 데이터형의 값을 반환하는 함수를 사용할 수 있습니다.

func가 실패할 경우 호출할 함수로, 'ErrorHandler'와 함께 함수 핸들이 쉼표로 구분되어 지정됩니다. 오류를 다시 발생시키거나 함수 func에 대해 유효한 출력값을 반환하도록 이 함수를 정의합니다.

MATLAB에서는 다음과 같이 2개의 입력 인수로 지정된 오류 처리 함수를 호출합니다.

  • 다음 필드를 포함한 구조체:

    identifier

    오류 ID입니다.

    message

    오류 메시지 텍스트입니다.

    index

    오류가 발생한 행 또는 그룹의 인덱스.

  • 오류 발생 시 함수 func의 입력 인수 세트

예를 들면 다음과 같습니다.

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

출력 인수

모두 축소

출력 테이블로, 테이블 또는 타임테이블로 반환됩니다. B에는 설명, 변수 단위, 변수 이름, 행 이름 등과 같은 메타데이터가 저장될 수 있습니다. 자세한 내용은 table 또는 timetable 속성 설명을 참조하십시오.

버전 내역

R2013b에 개발됨