R 완전 기초

R을 완전 기초부터 시작합니다


수강중

17. 함수, 조건문 if, print

함수 만들기

+1 해주는 함수

숫자를 인자로 입력하면 숫자에 더하기 1을 해주는 함수 만들기

함수 이름 : 더하기.일

함수 : function()

함수에 넘겨줄 값(인자)들의 목록을 () 안에 작성: (숫자)

함수의 작업을 {}안에 작성 : {숫자 + 1}

더하기.일 = function(숫자){
    숫자 + 1
}
더하기.일(5)
[1] 6

함수는 {}마지막줄이 실행이 되는 것이다.

숫자5 가 들어가 마지막줄{숫자 + 1}이 실행되어 6이 결과로 출력된다.

결과 변수에 더하기.일(5)을 저장하고 실행시킨다.

결과 = 더하기.일(5)
결과
[1] 6

복잡한 함수 만들어보기

홀짝 구분해주는 함수

홀수/짝수 구분 아이디어

  • 어떤 숫자를 2로 나눠서 나머지가 0이면 짝수이다.
  • 어떤 숫자를 2로 나눠서 나머지가 1이면 홀수다.

%%로 나머지를 구할 수 있다.

4 %% 2
[1] 0
3 %% 2
[1] 1

조건문if()-else()

조건에 따라 결과가 달라지는 것조건문이라고 한다.

2로 나눠서 나머지가 0이면 (조건) 짝수 (결과)

2로 나눠서 나머지가 1이면 (조건) 홀수 (결과)

if을 이용하여 조건을 작성한다.

if문은 함수와 형식이 비슷하다. ()안에 조건을 작성한다.

else()

조건이 binary 이라면, else는 나머지 해당 조건라는 뜻으로 따로 조건을 작성할 필요가 없다 .

앞의 if조건이 거짓이면 else 조건으로 넘어와 참/거짓 여부를 확인한후 결과를 실행한다.

홀짝 = function(숫자){
    if(숫자 %% 2 == 0){
        '짝수'
    }
    else{
        '홀수'
    }
}

홀짝함수를 테스트 한다

홀짝(1)
[1] "홀수"
홀짝(2)
[1] "짝수"

함수는 {}마지막줄이 실행이 되는 것이다.

숫자2가 들어가

if(숫자 %% 2 == 0){
        '짝수'
} else {
        '홀수'
}

이 실행되어 짝수가 결과로 출력된다.

아래와 같이 함수의 {}의 마지막줄 코드를 100으로 적으면 홀짝 함수의 결과는 항상 100이 된다

홀짝 = function(숫자){
    if(숫자 %% 2 == 0){
        '짝수'
    }
    else{
        '홀수'
    }
    100
}
홀짝(5)
[1] 100

return()

return 을 만나면 함수가 실행을 멈추고 return 뒤의 값을 돌려준다.

짝수홀수return ()안에 적는다.

홀짝 = function(숫자){
    if(숫자 %% 2 == 0){
       return('짝수')
    }
    else{
        return('홀수')
    }
    100
}

함수를 다시 실행시켜 홀짝(5) 결과값으로 홀수가 나옴을 확인한다

홀짝(5)
[1] "홀수"

{ } 블록 개념 설명

{}안에 return으로 작성된 부분은 화면에 바로 보이지 않는다.

홀짝함수를 실행후 홀수숫자 / 2 결과값을 같이 출력하고 싶으면 return이 아닌 print를 사용한다.

print()

print를 사용하면 화면에 5를 넣으면 홀수도 찍히고 그 뒤에 결과도 찍힌다

홀짝 = function(숫자){
    if(숫자 %% 2 == 0){
       print('짝수')
    }
    else{
        print('홀수')
    }
    숫자 / 2
}

함수를 다시 실행시켜 홀짝(5) 결과값으로 홀수2.5가 나옴을 확인한다.

홀짝(5)
[1] "홀수"
[1] 2.5

printreturn 의 차이

return은 함수의 결과값을 돌려준다.

print는 함수와 상관없이 화면에 찍어준다.

변수에 홀짝(5) 저장하여 실행하면, return은 출력이 되지만 print는 출력이 되지 않는다.

홀짝(5)을 변수 결과에 저장하여 결과를 출력한다.

return(숫자 / 2)의 결과만 출력됨을 확인한다.

결과 = 홀짝(5)
[1] "홀수"

복잡한 함수에서 print() 활용

복잡한 함수를 만들고 이에 대한 중간 계산과정을 확인하고 싶을때 print를 이용한다.

아래와 같이 식을 작성하여 근의공식변수에 넣고 인자에 1,5,3을 넣어 함수를 실행한다.

근의공식 = function(a, b, c){
    # a * x^2 + b * x + c = 0
    루트어쩌구 = sqrt(b^2 -4*a*c)
    (-b +c(루트어쩌구, -루트어쩌구)) / 2*a
}
근의공식(1, 5, 3)
[1] -0.6972244 -4.3027756

중간에 루트어쩌구 계산을 확인하기 위해 print를 사용한다.

근의공식 = function(a, b, c){
    # a * x^2 + b * x + c = 0
    루트어쩌구 = sqrt(b^2 -4*a*c)
    print(루트어쩌구)
    (-b +c(루트어쩌구, -루트어쩌구)) / 2*a
}
근의공식(1, 5, 3)
[1] 3.605551
[1] -0.6972244 -4.3027756