정보

    • 업무명     : R을 이용한 통계 분석 및 데이터 시각화 : 함수

    • 작성자     : 박진만

    • 작성일     : 2020-03-27

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

    • R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다. 

    • 통계 분석 기능으로 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.

    • 또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.

    • 특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.

    • 또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.

     

     

    [특징]

    • 데이터를 이해하기 위해서 통계 분석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

       

    [기능]

    • 데이터형 소개

     

    [활용 자료]

    • 없음

     

    [자료 처리 방안 및 활용 분석 기법]

    • 없음

     

    [사용법]

    • 소스 코드 예시 참조

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • R v3.6.2

    • R Studio v1.2.5033

     

     소스 코드

    • 평균과 합계 등의 간단한 함수는 R 표준 문법으로 구현되어 있기 때문에 그대로 불러올 수있다. 

    • 그러나 복잡한 처리를 할 때 스스로 작업단위로서 기능하는 함수를 만들어야 할 필요가 있다.

     

    [함수 생성 방법]

    • 함수는 function () { }를 이용하여 작성한다.

    • 괄호 ( )는 함수에 대한 인자가 들어간다.

    • 중괄호 안에는 실제 처리 내용이 들어간다. 

    • 예를 들어, 2 개의 인수 ( x과 y)를 받고 그 차를 반환하는 함수는 아래와 같이 작성한다. (함수의 이름은 dis)

    dis <- function(x, y) {
      sa <- x - y              # x - y를 구한다.
      return(sa)
    }

     

    • 이렇게 만든 함수 dis는 아래와 같이 사용한다.

    dis(30, 10)
    ## [1] 20
    
    # 인수의 이름을 명시하면, 순서에 상관없이 입력할 수 있다.
    dis(y = 10, x = 30)   
    ## [1] 20

     

    • 함수를 이용함에 있어 인수가 모두 들어가지 않았다면 오류가 발생하게 된다.

    • 예를 들어, dis함수의 경우 두 번째 인수 y를 생략하면 아래와 같은 오류가 발생한다.

    dis(30)
    ## Error in x - y : 'y' is missing

     

    • x가 생략 된 경우 30을 대입하고 또한 y가 생략 된 경우 0을 대입하도록 설정할 수있다.

    dis <- function(x = 30, y = 0) {
      sa <- x - y
      return(sa)
    }
    
    dis(20)        # y를 생략 (y는 0으로 자동 대체)
    ## [1] 20
    
    dis()          # x와 y 모두 생략 (x는 30, y는 0으로 자동 대체)
    ## [1] 30

     

    [return과 invisible]

    • 함수에서 다양한 연산을 수행 한 후, 계산 결과를 반환하는 경우에는 return또는 invisible을 이용한다.

    • 양자의 기능은 거의 같다. return의 경우는 계산 결과를 반환함과 동시에 화면에 표시한다. 한편, invisible계산 결과를 화면에 표시하지 않는다.

    # return으로 반환하는 함수
    plus1 <- function(x = 0, y = 0) {
      wa <- x + y
      return(wa)
    }
    
    # invisible으로 반환하는 함수
    plus2 <- function(x = 0, y = 0) {
      wa <- x + y
      invisible(wa)
    }

     

    • 그러나 함수의 계산 결과를받는 변수가 있는 경우, 계산 결과를 변수에 할당되므로 return과 invisible의 기능은 동일하다.

    x1 <- plus1(10, 20)
    x1
    ## [1] 30
    
    x2 <- plus2(10, 20)
    x2
    ## [1] 30

     

    • 한편, 함수의 계산 결과를 받는 변수가없는 경우 return는 계산 결과를 화면에 표시한다. 

    • 이에 반해  invisible계산 결과를 화면에 표시하지 않기 때문에 아무것도 출력되지 않는 것 처럼 보인다.

    plus1(10, 20)
    ## [1] 30
    
    plus2(10, 20)

     

    [함수 내부에서 인자값을 list화 하기]

    • 아래의 코드는 함수 내부에서 함수에 주어진 인수와 그 값을 리스트에 저장하는 방법이다.

    f <- function(a, b, c, ...) {
      fcall <- as.list(match.call(expand.dots = TRUE))
      print(fcall$a)
      print(fcall)
    }
    
    f(a = 1, b = "A", c = "a")
    ## [1] 1
    ##
    ## [[1]]
    ## f
    ## $a
    ## [1] 1
    ## $b
    ## [1] "A"
    ## $c
    ## [1] "a"
    
    f(a = 1, b = "A", c = "a", d = 1024)
    ## [1] 1
    ## 
    ## [[1]]
    ## f
    ## $a
    ## [1] 1
    ## $b
    ## [1] "A"
    ## $c
    ## [1] "a"
    ## $d
    ## [1] 1024

     

    [다음글]

     

    [R] R을 이용한 통계 분석 및 데이터 시각화 : 분기문

    정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 분기문 작성자 : 박진만 작성일 : 2020-03-27 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분..

    shlee1990.tistory.com

     

    [이전글]

     

    [R] R을 이용한 통계 분석 및 데이터 시각화 : 수학 기본 함수

    정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 수학 기본 함수 작성자 : 박진만 작성일 : 2020-03-26 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지..

    shlee1990.tistory.com

     

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기