함수, 조건문 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
print
와 return
의 차이
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