본문 바로가기
R 주제/R 기초 및 통계 강의

[R 강의] 78. match.arg 함수

by 만다린망고 2020. 4. 1.
반응형
도구 R로 푸는 통계

78. match.arg 함수



match.arg 함수는 첫번째 문자형 벡터의 인수(argument)가 두번째 벡터의 인수에 있을 때, 그 값을 반환해줍니다. 문자형벡터만 가능합니다. 아래와 같은 기본형을 갖습니다. 


match.arg(arg, choices, several.ok = FALSE)


> match.arg('a',c('a','b','c'))

[1] "a"


앞글자가 같아도 반환해줍니다. 


> match.arg('a',c('apple','banana','chicken'))

[1] "apple"

> match.arg('ap',c('apple','banana','chicken'))

[1] "apple"

> match.arg('app',c('apple','banana','chicken'))

[1] "apple"


단, 앞에서 부터 같아야 합니다. 


> match.arg('pple',c('apple','banana','chicken'))

Error in match.arg("pple", c("apple", "banana", "chicken")) : 

  'arg'은 반드시 “apple”, “banana”, “chicken” 중 하나이어야 합니다


첫번째 자리에 원소가 여러개인 문자형 벡터가 올 수도 있습니다. 아래와 같이 옵션을 설정해주면 됩니다. 


> match.arg(c('a','b'),c('apple','banana','chicken'), several.ok = TRUE)

[1] "apple"  "banana"


match.arg 는 우리가 함수를 정의할 때 많이 사용됩니다. 옵션을 설정할 때 편리하기 때문입니다. 아래와 같은 함수를 정의했습니다. match.arg 에 choice를 설정하지 않아도, 함수와 함께 사용되면 아래 예시 function 안의 type이 choices로 적용됩니다. 


hsmfun = function(x, type = c("mean", "var", "square")) {

  type = match.arg(type)

  switch(type,

         mean = mean(x),

         var = var(x),

         square = x*x

)

}


이 함수를 사용해보면 왜 match.arg가 편리한지 알 수 있을 것입니다. 


> hsmfun(c(1,2,3),type="m")

[1] 2

> hsmfun(c(1,2,3),type="me")

[1] 2

> hsmfun(c(1,2,3),type="ar")

Error in match.arg(type) : 

  'arg' should be one of “mean”, “var”, “squar


 

영상이 더 편하신 분


반응형

댓글