반응형
/*********************************************************************************************************
-- Title : [R3.3] 제어문(if) 및 반복문(for)
-- Reference : hrd-net
-- Key word : R if else ifelse switch which for while repeat continue break
*********************************************************************************************************/
-- R
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | # ******************************************** # -- if 조건문 # ******************************************** x = 10 y = 5 z = x * y z # -- if ~ else 문 if(x*y > 40) { cat("x*y의 결과는 40 이상입니다.\n") # \n 줄바꿈 cat("x*y =", z) } else # } 뒤에 else 안쓰면 에러 { cat("x*y의 결과는 40 미만입니다. x*y =", z,"\n") } # -- if ~ else if 문 score = scan() score # 85 if (score >= 90) { result="A학점" # 조건식1 참인 경우 } else if(score >=80) { result="B학점" # 조건식1 거짓, 조건식2 참 } else if(score >=70) { result="C학점" } else if(score >=60) { result="D학점" } else { result="F학점" } cat("당신의 학점은 ",result) print(result) # -- 주민번호 이용 -> 성별 판별 install.packages("stringr") library(stringr) jumin = "123456-5234567" gender = str_sub(jumin,8,8) if (gender == "1" || gender == "3") { cat('당신은 남자입니다.') }else if(gender == "2" || gender == "4") { cat('당신은 여자입니다.') } else { cat('주민번호 양식이 틀립니다.') } # -- ifelse 문 # vector -> vector score = c(85, 70, 94, 65) # vector result = ifelse(score>=80, "우수","노력") #우수 result # "우수" "노력" "우수" "노력" # -- ifelse 문 응용 excel =read.csv("D:\\RProject\\Rwork\\Part-I\\excel.csv", header = T) excel str(excel) head(excel) q5 = excel$q5 q1 = excel$q1 # q1 변수값 추출 q1 mode(q1) str(q1) class(q1) ifelse(q1>=4, sqrt(q1),q1) # 4보다 큰 경우 sqrt()적용 ifelse(q1>=2 & q1<=4, q1^2, q1) # 1과 5만 출력, 나머지(2~4) 지수승 # ******************************************** # -- switch 조건문 # switch(비교구문, 실행구문1, 실행구문2, 실행구문3) # ******************************************** switch(2,"red","green","blue") switch(1,"red","green","blue") switch(4,"red","green","blue") switch(0,"red","green","blue") switch("color", "color" = "red", "shape" = "square", "length" = 5) # ******************************************** # -- which 조건문 # which()의 괄호내의 조건에 해당하는 위치(인덱스)를 출력 # ******************************************** name = c("kim","lee","choi","park") name which(name=="choi") # -- 데이터프레임에서 확인 no = c(1:5) name =c("홍길동","이순신","강감찬","유관순","김유신") score = c(85,78,89,90,74) exam = data.frame(학번=no,이름=name,성적=score) exam which(exam$이름=="유관순") # ******************************************** # -- for 반복문 # ******************************************** name = c("kim", "lee", 'kang') cnt = 1 for (n in name) { print(cnt) # 반복 횟수 print(n) cnt = cnt + 1 # 카운터 변수 } i = c(1:10) for (n in i) { print(n * 10) # 계산식(numeric만 가능) 출력 print(n) } for(n in i) { if(n%%2==0) print(n) # %% : 나머지값 - 짝수만 출력 } for (n in i) { if (n%%2==0) { next # 짝수면 skip }else { print(n) } } # ******************************************** # -- while 반복문 # ******************************************** i = 0 while (i < 10) { i = i + 1 print(i) } cnt = 1 repeat { print(cnt) cnt = cnt + 2 if(cnt>15) break # cnt가 15보다 크면 탈출 } | cs |
반응형