이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
varfun
함수를 테이블 또는 타임테이블 변수에 적용
설명
는 하나 이상의 이름-값 인수를 사용하여 옵션을 지정합니다. 예를 들어, B
= varfun(func
,A
,Name,Value
)GroupingVariables
이름-값 인수를 사용하여 테이블 변수의 데이터 그룹에 대한 계산을 수행할 수 있습니다. 데이터 그룹 계산에 대한 자세한 내용은 데이터 그룹에 대한 계산 항목을 참조하십시오.
예제
요소별 함수 적용하기
테이블의 변수에 요소별 함수를 적용합니다.
숫자형 변수가 포함된 테이블을 만듭니다.
A = table([10.71;-2.05;-0.35;-0.82;1.57],[9.23;3.12;-1.18;0.23;16.41])
A=5×2 table
Var1 Var2
_____ _____
10.71 9.23
-2.05 3.12
-0.35 -1.18
-0.82 0.23
1.57 16.41
round
함수를 적용하여 A
의 숫자형 값을 반올림합니다. 함수를 varfun
에 대한 입력 인수로 지정하려면 @
기호를 사용하십시오. 출력 테이블의 변수 이름은 입력 테이블의 함수 이름과 변수 이름을 기반으로 합니다.
B = varfun(@round,A)
B=5×2 table
round_Var1 round_Var2
__________ __________
11 9
-2 3
0 -1
-1 0
2 16
테이블 변수를 축소하는 함수 적용하기
첫 번째 차원을 따라 테이블 변수를 축소하는 함수(예: sum
또는 max
)를 적용할 수 있습니다. 예를 들어, varfun
을 사용하여 테이블에 있는 각 변수의 평균을 계산합니다.
숫자형 변수가 포함된 테이블을 만듭니다.
A = table([0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A=5×2 table
Var1 Var2
_____ _____
0.71 0.23
-2.05 0.12
-0.35 -0.18
-0.82 0.23
1.57 0.41
mean
함수를 테이블의 모든 변수에 적용합니다. 출력 테이블에는 입력 테이블의 각 변수의 평균값이 포함됩니다.
B = varfun(@mean,A)
B=1×2 table
mean_Var1 mean_Var2
_________ _________
-0.188 0.162
varfun
이 테이블 대신 숫자형 벡터를 반환하도록 하려면 OutputFormat
이름-값 인수를 "uniform"
으로 지정하십시오. "uniform"
출력 형식을 사용하려면 func
가 항상 스칼라를 반환해야 합니다.
B = varfun(@mean,A,"OutputFormat","uniform")
B = 1×2
-0.1880 0.1620
함수를 변수 내 그룹에 적용하기
숫자형 데이터 변수 여러 개와 그룹화 변수인 비숫자형 변수 한 개를 포함하는 테이블을 만듭니다. 그런 다음, 숫자형 변수 내의 각 그룹에 대해 계산을 수행합니다.
CSV(쉼표로 구분된 값) 파일의 데이터를 테이블로 읽어옵니다. 샘플 파일에는 두 학교의 학생 10명의 테스트 점수가 포함되어 있습니다.
scores = readtable("testScores.csv","TextType","string"); scores.School = categorical(scores.School)
scores=10×5 table
LastName School Test1 Test2 Test3
__________ __________ _____ _____ _____
"Jeong" XYZ School 90 87 93
"Collins" XYZ School 87 85 83
"Torres" XYZ School 86 85 88
"Phillips" ABC School 75 80 72
"Ling" ABC School 89 86 87
"Ramirez" ABC School 96 92 98
"Lee" XYZ School 78 75 77
"Walker" ABC School 91 94 92
"Garcia" ABC School 86 83 85
"Chang" XYZ School 79 76 82
학교별로 각 테스트의 평균 점수를 계산합니다. 변수 Test1
, Test2
, Test3
은 숫자형 데이터 변수입니다. School
변수는 그룹화 변수입니다. 그룹화 변수를 지정하면 그룹화 변수의 고유한 값에 의해 데이터 변수의 대응값이 속하는 그룹이 정의됩니다.
vars = ["Test1","Test2","Test3"]; meanScoresBySchool = varfun(@mean, ... scores, ... "InputVariables",vars, ... "GroupingVariables","School")
meanScoresBySchool=2×5 table
School GroupCount mean_Test1 mean_Test2 mean_Test3
__________ __________ __________ __________ __________
ABC School 5 87.4 87 86.8
XYZ School 5 84 81.6 84.6
출력 테이블은 각 그룹에 속하는 입력 테이블 행이 몇 개인지를 나타내는 GroupCount
라는 변수를 포함합니다.
함수를 타임테이블 변수 내 그룹에 적용하기
샘플 데이터가 포함된 타임테이블을 만듭니다. 행 시간값은 중복된 값이 허용되므로 타임테이블의 행 시간값에 대해서 그룹을 정의할 수 있습니다.
Timestamps = datetime(2023,1,1)+days([0 1 1 2 3 3])'; A = timetable(Timestamps, ... [0.71;-2.05;-0.35;-0.82;1.57;0.09], ... [0.23;0.12;-0.18;0.23;0.41;0.02], ... 'VariableNames',["x","y"])
A=6×2 timetable
Timestamps x y
___________ _____ _____
01-Jan-2023 0.71 0.23
02-Jan-2023 -2.05 0.12
02-Jan-2023 -0.35 -0.18
03-Jan-2023 -0.82 0.23
04-Jan-2023 1.57 0.41
04-Jan-2023 0.09 0.02
타임테이블에 포함된 변수의 평균값을 일별로 계산합니다. 행 시간값으로 구성된 벡터를 그룹화 변수로 지정합니다. 입력 A
가 타임테이블이므로 출력 B
는 타임테이블입니다. 행 시간값으로 구성된 벡터를 그룹화 변수로 지정하는 경우, 어떤 변수도 또 다른 그룹화 변수로 지정할 수 없습니다.
B = varfun(@mean,A,"GroupingVariables","Timestamps")
B=4×3 timetable
Timestamps GroupCount mean_x mean_y
___________ __________ ______ ______
01-Jan-2023 1 0.71 0.23
02-Jan-2023 2 -1.2 -0.03
03-Jan-2023 1 -0.82 0.23
04-Jan-2023 2 0.83 0.215
적용된 함수에 선택적 인수 전달하기
함수를 적용할 때 선택적 인수를 전달하려면 함수 호출을 익명 함수에 래핑하십시오.
숫자형 변수가 포함된 테이블을 만듭니다. 테이블의 일부 요소에 NaN
을 할당합니다.
A = table([10.71;-2.05;NaN;-0.82;1.57],[9.23;NaN;-1.18;0.23;16.41])
A=5×2 table
Var1 Var2
_____ _____
10.71 9.23
-2.05 NaN
NaN -1.18
-0.82 0.23
1.57 16.41
기본적으로 mean
함수는 입력 배열에 NaN
이 있으면 NaN
을 반환합니다.
B = varfun(@mean,A)
B=1×2 table
mean_Var1 mean_Var2
_________ _________
NaN NaN
mean
을 적용할 때 NaN
을 생략하려면 "omitnan"
옵션을 지정합니다. mean
을 적용할 때 이 옵션을 사용하려면 익명 함수에 "omitnan"
을 지정하는 호출을 래핑하십시오.
func = @(x) mean(x,"omitnan");
익명 함수를 적용하여 "omitnan"
으로 평균값을 계산합니다.
C = varfun(func,A)
C=1×2 table
Fun_Var1 Fun_Var2
________ ________
2.3525 6.1725
입력 인수
func
— 함수
함수 핸들
함수로, 함수 핸들로 지정됩니다. 기존 함수의 핸들을 지정하거나, 함수를 파일에 정의하거나, 익명 함수를 지정할 수 있습니다. 이 함수는 하나의 입력 인수를 받으며 다음과 같은 형식의 구문을 가져야 합니다.
result = f(arg)
A
의 변수에 대해 f
를 호출하기 위해 varfun
에 대한 다음 호출에 표시된 대로 func
를 지정합니다.
func = @f; B = varfun(func,A);
A
의 모든 변수에서, varfun
은 각 변수에 대해 func
를 호출한 다음 func
의 출력값을 출력값 B
의 대응되는 변수로 할당합니다.
추가 고려 사항:
func
가 나타내는 함수가 선택적 추가 인수가 있는 다른 구문을 가질 수 있습니다. 그러나varfun
은 이 함수를 호출할 때 입력 인수가 하나만 있는 구문을 호출합니다.예를 들어,
mean
함수는"omitnan"
과 같은 선택적 인수를 지정하는 구문을 갖습니다. 그러나func
를@mean
으로 지정할 경우varfun
은mean(arg)
구문을 사용하여mean
을 호출합니다.선택적 인수와 함께 함수를 호출하려면 해당 함수를 익명 함수에 래핑하십시오. 예를 들어,
"omitnan"
옵션과 함께mean
을 호출하려면func
를@(x) mean(x,"omitnan")
으로 지정하십시오.func
가 호출될 때마다 행 개수가 다른 배열을 반환하는 경우에는OutputFormat
이름-값 인수를"cell"
로 지정하십시오. 그러지 않을 경우,func
는 호출될 때마다 행 개수가 같은 배열을 반환해야 합니다.func
가 둘 이상의 함수 파일에 대응하는 경우(즉,func
가 일련의 오버로드된 함수를 나타내는 경우) MATLAB®은 입력 인수의 클래스에 따라 어떤 함수를 호출할지를 결정합니다.
예: B = varfun(@mean,A)
는 입력값의 평균값을 계산합니다.
예: B = varfun(@(x) x.^2,A)
는 입력값의 각 요소의 제곱을 계산합니다.
예: B = varfun(@(x) mean(x,"omitnan"),A)
는 지정된 "omitnan"
옵션을 사용하여 mean
을 호출합니다.
A
— 입력 테이블
테이블 | 타임테이블
입력 테이블로, table형 또는 timetable형으로 지정됩니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
예: B = varfun(func,A,InputVariables=["Var2","Var3"])
은 func
의 입력값으로 A
의 Var2
변수와 Var3
변수만 사용합니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: B = varfun(func,A,"InputVariables",["Var2","Var3"])
은 func
의 입력값으로 A
의 Var2
변수와 Var3
변수만 사용합니다.
InputVariables
— func
에 전달할 A
의 변수
양의 정수 | 양의 정수로 구성된 벡터 | string형 배열 | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열 | pattern
형 스칼라 | 논리형 벡터 | 함수 핸들
func
에 전달할 A
의 변수로, 다음 표의 인덱싱 방식 중 하나를 사용하여 지정됩니다.
인덱싱 방식 | 예제 |
---|---|
변수 이름:
|
|
변수 인덱스:
|
|
함수 핸들:
|
|
예: B = varfun(func,A,InputVariables=[1 3 4])
는 A
의 첫 번째, 세 번째, 네 번째 변수만 func
에 대한 입력값으로 사용합니다.
예: B = varfun(func,A,InputVariables=@isnumeric)
은 A
의 숫자형 변수만 func
에 대한 입력값으로 사용합니다.
GroupingVariables
— 그룹화 변수로 사용할 A
의 변수
양의 정수 | 양의 정수로 구성된 벡터 | string형 배열 | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열 | pattern
형 스칼라 | 논리형 벡터
그룹화 변수로 사용할 A
의 변수로, 다음 표의 인덱싱 방식 중 하나를 사용하여 지정됩니다.
인덱싱 방식 | 예제 |
---|---|
변수 이름:
|
|
변수 인덱스:
|
|
그룹화 변수의 고유한 값은 그룹을 정의합니다. A
에서 그룹화 변수 값이 같은 행은 같은 그룹에 속합니다. varfun
은 func
를 전체 변수가 아니라, A
의 남아 있는 각 변수 내 각 행 그룹에 적용합니다. 그룹화 변수를 사용한 계산에 대한 자세한 내용은 데이터 그룹에 대한 계산 항목을 참조하십시오.
그룹화 변수는 다음 표에 나열된 임의의 데이터형을 가질 수 있습니다.
그룹을 지정하는 값 | 그룹화 변수의 데이터형 |
---|---|
숫자 | 숫자형 벡터 또는 논리형 벡터 |
텍스트 | string형 배열, 또는 문자형 벡터로 구성된 셀형 배열 |
날짜/시간 |
|
범주 |
|
Bin | 숫자형 값, |
데이터형 중 많은 수가 NaN
, NaT
, 정의되지 않은 categorical
형 값 또는 누락값인 string형과 같이 누락값을 표현하는 다양한 방법을 가지고 있습니다. 그룹화 변수가 누락값을 표현할 수 있는 데이터형을 갖는 경우, 해당 그룹화 변수에 누락값이 있는 행은 어떤 그룹에도 속하지 않으며 출력값에서 제외됩니다.
행 레이블은 그룹화 변수일 수 있습니다. 사용자는 행 레이블만을 기준으로, 또는 하나 이상의 A
의 변수를 기준으로, 또는 행 레이블과 변수를 함께 기준으로 하여 그룹화할 수 있습니다.
A
가 테이블인 경우 레이블은 행 이름입니다.A
가 타임테이블인 경우 레이블은 행 시간값입니다.
출력값 B
는 입력값 A
의 각 행 그룹에 대해 하나의 행을 가집니다. B
가 테이블 또는 타임테이블이면 B
는 다음을 포함합니다.
func
가 적용된 입력 테이블 변수에 대응하는 변수그룹화 변수에 대응하는 변수
값이 각 그룹에 있는 입력값
A
의 행 개수인 새로운 변수GroupCount
B
가 타임테이블이면 B
는 다음도 포함합니다.
A
의 각 행 그룹의 첫 번째 행 시간값이B
의 대응하는 행 시간값인 행 시간값.B
를 행 시간값이 없는 테이블로 반환하려면OutputFormat
을"table"
로 지정하십시오.
예: B = varfun(func,A,GroupingVariables="Var3")
은 A
에 포함된 Var3
이라는 이름의 변수를 그룹화 변수로 사용합니다.
예: B = varfun(func,A,GroupingVariables=["Var3","Var4"])
는 A
에 포함된 Var3
이라는 이름의 변수와 Var4
라는 이름의 변수를 그룹화 변수로 사용합니다.
예: B = varfun(func,A,GroupingVariables=[3 4])
는 A
의 세 번째 변수와 네 번째 변수를 그룹화 변수로 사용합니다.
OutputFormat
— B
의 형식
"auto"
(디폴트 값) | "table"
| "timetable"
| "uniform"
| "cell"
B
의 형식으로, 다음 표에 있는 값 중 하나로 지정됩니다.
|
|
|
|
|
|
|
|
|
|
예: B = varfun(func,A,OutputFormat="uniform")
은 출력값을 벡터로 반환합니다.
ErrorHandler
— func
가 실패할 경우 호출할 함수
함수 핸들
func
가 실패할 경우 호출할 함수로, 함수 핸들로 지정됩니다. func
에서 오류가 발생하면 ErrorHandler
로 지정된 오류 핸들러 함수는 오류를 포착하고 함수에 지정된 동작을 수행합니다. 오류 핸들러는 오류를 발생시키거나 func
와 동일한 개수의 출력값을 반환해야 합니다.
ErrorHandler
를 지정하지 않을 경우 varfun
은 func
에서 포착한 오류를 다시 발생시킵니다.
오류 핸들러의 첫 번째 입력 인수는 다음 필드를 포함하는 구조체입니다.
cause
— 오류에 대한 정보가 포함된MException
객체 (R2024a 이후)index
— 오류가 발생한 변수의 인덱스name
— 오류가 발생한 변수의 이름
오류 핸들러에 대한 나머지 입력 인수는 func
에서의 오류 발생을 초래한, func
호출에 대한 입력 인수입니다.
예를 들어, func
가 두 개의 double형을 출력 인수로 반환한다고 가정하겠습니다. 오류 핸들러를 경고를 발생시키고 두 개의 출력 인수를 반환하는 함수로 지정할 수 있습니다.
function [A,B] = errorFunc(S,varargin) warning(S.cause.identifier,S.cause.message); A = NaN; B = NaN; end
R2024a 이전 릴리스에서 오류 핸들러의 첫 번째 입력 인수는 다음 필드를 포함하는 구조체입니다.
identifier
— 오류 IDmessage
— 오류 메시지 텍스트index
— 오류가 발생한 변수의 인덱스name
— 오류가 발생한 변수의 이름
예: B = varfun(func,A,ErrorHandler=@errorFunc)
는 errorFunc
를 오류 핸들러로 지정합니다.
출력 인수
세부 정보
데이터 그룹에 대한 계산
데이터 분석에서는 일반적으로 데이터 그룹에 대한 계산을 수행합니다. 이러한 계산의 경우 하나 이상의 데이터 변수를 데이터 그룹으로 분할하고, 각 그룹에 대해 계산을 수행하고, 결과를 하나 이상의 출력 변수로 조합합니다. 하나 이상의 그룹화 변수를 사용하여 그룹을 지정할 수 있습니다. 그룹화 변수의 고유 값은 데이터 변수의 대응값이 속하는 그룹을 정의합니다.
예를 들어, 다음 도식은 6×1 숫자형 벡터를 두 개의 데이터 그룹으로 분할하고 각 그룹의 평균을 계산한 다음 출력값을 2×1 숫자형 벡터로 조합하는 그룹화된 간단한 계산을 보여줍니다. 6×1 그룹화 변수에는 두 개의 고유한 값 AB
와 XYZ
가 있습니다.
숫자, 텍스트, 날짜/시간, 범주 또는 Bin이 포함된 그룹화 변수를 지정할 수 있습니다.
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
이 함수는 tall형 배열을 지원하지만 다음과 같은 제한 사항이 있습니다.
func
입력값은 항상 tall형 배열을 반환합니다.지원되는 이름-값 인수는 다음과 같습니다.
InputVariables
— 값은 함수 핸들 또는 패턴 표현식이 될 수 없습니다.GroupingVariables
— 값은 패턴 표현식이 될 수 없습니다.OutputFormat
— 값은"uniform"
,"table"
,"timetable"
,"cell"
중 하나만 될 수 있습니다.
입력 배열이 tall형 타임테이블이고
OutputFormat
이"timetable"
인 경우 지정한 함수는 첫 번째 차원의 크기가 입력값과 같은 배열을 반환해야 합니다. 입력 함수가mean
과 같은 축소 함수일 때는OutputFormat
을"table"
로 지정하십시오.
자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
함수 핸들 입력값
func
는 상수여야 합니다.함수 핸들은
varfun
함수 자체에 대한 입력값은 될 수 있지만, 진입점 함수에 대한 입력값은 될 수 없습니다. 코드 생성 용도의 코드 내에func
를 지정하십시오. 자세한 내용은 코드 생성 시 함수 핸들 제한 사항 (MATLAB Coder) 항목을 참조하십시오.모든 이름-값 인수의 값은 상수여야 합니다.
InputVariables
와GroupingVariables
이름-값 인수의 값은 패턴 표현식을 지원하지 않습니다.코드 생성 시
ErrorHandler
이름-값 인수는 지원되지 않습니다.가변 크기 입력 인수는 지원되지 않습니다.
생성된 코드에서 그룹화 변수는 중복된 값을 가질 수 없습니다.
GroupingVariables
이름-값 인수를 지정했고InputVariables
로 지정된 각 변수에 대해 함수가 서로 다른 데이터형을 반환하는 경우에는OutputFormat
을"cell"
로 지정할 수 없습니다.입력값이 timetable형이고
GroupingVariables
를 지정하는 경우 출력값은 항상 불규칙적인 타임테이블입니다.그룹을 지정했고 컴파일 시점에는 그룹의 수를 알지 못하며 그룹 수가 0이면 생성된 코드에서 출력값의 빈 double형 변수는 크기가 1×0일 수 있습니다. 이러한 변수는 MATLAB에서 크기가 0×0입니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
버전 내역
R2013b에 개발됨R2023a: OutputFormat
이름-값 인수를 "auto"
로 지정하여 출력 데이터형을 입력 데이터형과 일치시킴
데이터형이 입력값의 데이터형과 일치하는 출력값을 반환하려면 OutputFormat
이름-값 인수를 "auto"
로 지정하십시오. 이 값은 디폴트 값입니다.
참고 항목
rowfun
| cellfun
| structfun
| arrayfun
| findgroups
| splitapply
| groupsummary
| convertvars
| vartype
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 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)