59doit
[ R ] 연산자 & 조건문 & 반복문 본문
반응형
연산자
- 산술연산자, 관계연산자, 논리연산자
(1) 산술연산자
- 사칙연산(+, -, *, /), 나머지 계산 연산자(%%), 거듭제곱(^ 또는 **)계산 연산
ex ) 산술연산자 사용
num1 <- 100 num2 <- 20 result <- num1 + num2 result # [1] 120 result <- num1 - num2 result # [1] 80 result <- num1 * num2 result # [1] 2000 result <- num1 / num2 result # [1] 5 result <- num1 %% num2 result # [1] 0 result <- num1 ^ 2 result # [1] 10000 result <- num1 ^ num2 result # [1] 1e+40 |
- “1e+40” : “1 * 10^40”과 같은 결과를 나타냄
(2) 관계연산자
- 관계연산자(==, !=, >, >=, <, <=)
- 관계식의 결과가 참이면 TRUE, 거짓이면 FALSE값을 반환하는 연산자
ex ) 관계연산자 사용
boolean <- num1 == num2 boolean # [1] FALSE boolean <- num1 != num2 boolean # [1] TRUE boolean <- num1 > num2 boolean # [1] TRUE boolean <- num1 >= num2 boolean # [1] TRUE boolean <- num1 < num2 boolean # [1] FALSE boolean <- num1 <= num2 boolean # [1] FALSE |
(2) 논리연산자
- TRUE / FALSE 값 반환
ex ) 논리연산자 사용
num1 <- 100 num2 <- 20 logical <- num1 >= 50 & num2 <= 10 logical # T T => F logical <- num1 >= 50 | num2 <= 10 logical # T T => TRUE logical <- num1 >= 50 logical # TRUE logical <= !(num1 >= 50) # FALSE logical # TRUE x <- TRUE; y <- FALSE xor(x, y) #TRUE x <- TRUE; y <- TRUE xor(x, y) #FALSE x <- FALSE; y <- TRUE xor(x, y) #TRUE x <- FALSE; y <- FALSE xor(x, y) #FALSE |
조건문
if(), ifelse(), switch(), which()함수
(1) if()문ifelse()함수
if(조건식) { 참인 경우 처리문
}else { 거짓인 경우 처리문
}
- { }을 이용하여 if와 else의 블록을 지정한다.
ex ) if()함수 사용
x <- 50; y <- 4; z <- x * y if(x * y >= 40) { cat("x * y의 결과는 40이상입니다.\n") cat("x * y = ", z) } else { cat("x * y의 결과는 40미만입니다. x * y = ", z, "\n") } # x * y의 결과는 40이상입니다. # x * y = 200 |
ex ) if()함수 이용 점수의 학점 산출
score <- scan() score result <- "노력" if(score >= 80) { result <- "우수" } cat("당신의 학점은 ", result, score) |
ex ) if~else if 형식으로 학점 산출
score <- scan() if(score >= 90) { result = "A학점" } else if(score >= 80) { result = "B학점" } else if(score >= 70) { result = "C학점" } else if(score >= 60) { result = "D학점" } else { result = "F학점" } cat("당신의 학점은", result) print(result) |
(2) ifelse()함수
- 조건식이 참인 경우와 거짓인 경우 처리할 문장을 ifelse()문에 포함
- Ifelse(조건식, 참인 경우 처리문, 거짓인 경우 처리문)
ex ) ifelse()함수 사용
score <- scan() ifelse(score >= 80, "우수", "노력") ifelse(score <= 80, "우수", "노력") |
ex ) ifelse()함수 응용
excel <- read.csv("C:/excel.csv", header = T) q1 <- excel$q1 q1 ifelse(q1 >= 3, sqrt(q1), q1) |
ex ) ifelse()함수에서 논리연산자 사용
ifelse(q1 >= 2 & q1 <= 4, q1 ^ 2, q1 |
(3) switch()함수
- 비교 문장의 내용에 따라 여러 개의 실행문 중 하나를 선택할 수 있도록 프로그램 작성
- switch(비교문, 실행문1 [, 실행문2, 실행문 3, …])
- 비교문 위치에 있는 변수의 이름이 실행문 위치에 있는 변수의 이름과 일치할 때 일치하는 변수에 할당된 값을 출력
ex ) switch()함수를 사용하여 사원명으로 급여정보 보기
switch("name", id = "hong", pwd = "1234", age = 105, name = "홍길동") empname <- scan(what = "") empname switch(empname, hong = 250, lee = 350, kim = 200, kang = 400 ) |
(3) witch()함수
- 벡터 객체를 대상으로 특정 데이터를 검색하는데 사용되는 함수
- 조건식이 결과가 참인 벡터 원소의 위치(인덱스)가 출력되며, 조건식의 결과가 거짓이면 0이 출력된다.
- which(조건)
ex ) 벡터에서 which()함수 사용하여 index값 반환
name <- c("kim", "lee", "choi", "park") which(name == "choi") # [1] 3 |
ex ) 데이터프레임에서 which()함수 사용
- 데이터프레임에서 해당 원소가 없으면 0이 출력
- which함수는 크기가 큰 데이터프레임이나 테이블 구조의 자료를 대상으로 특정 정보를 검색하는데 사용
#1데이터프레임 생성
no <- c(1:5) name <- c("홍길동", "이순신", "강감찬", "유관순", "김유신") score <- c(85, 78, 89, 90, 74) exam <- data.frame(학번 = no, 이름 = name, 성적 = score) exam # 학번 이름 성적 # 1 1 홍길동 85 # 2 2 이순신 78 # 3 3 강감찬 89 # 4 4 유관순 90 # 5 5 김유신 74 |
#2 일치하는 이름의 인덱스 반환
which(exam$이름 == "유관순") exam[4,] # 학번 이름 성적 # 4 4 유관순 90 |
반복문
- 조건에 따라서 특정 실행문을 지정된 횟수만큼 반복적으로 수행할 수 있는 문
- for()함수, while()함수
(1) for()함수
- 지정한 횟수만큼 실행문을 반복 수행하는 함수
- for(변수 in 변수) {실행문}
ex ) for()함수 사용
i <- c(1:10) for(n in i) { print(n * 10) print(n) } # [1] 10 # [1] 1 # [1] 20 # [1] 2 # [1] 30 # [1] 3 # [1] 40 # [1] 4 # [1] 50 # [1] 5 # [1] 60 # [1] 6 # [1] 70 # [1] 7 # [1] 80 # [1] 8 # [1] 90 # [1] 9 # [1] 100 # [1] 10 |
- 반복할 문장이 하나 뿐일 때는 { } 생략 가능
ex ) 짝수 값만 출력
i <- c(1:10) for(n in i) if(n %% 2 == 0) print(n) # [1] 2 # [1] 4 # [1] 6 # [1] 8 # [1] 10 |
- %%연산자: 나머지 계산
ex ) 짝수이면 넘기고, 홀수 값만 출력
i <- c(1:10) for(n in i) { if(n %% 2 == 0) { next } else { print(n) } } # [1] 1 # [1] 3 # [1] 5 # [1] 7 # [1] 9 |
- next문: for()함수의 반복 범위에서 문장을 실행하지 않고 계속 반복할 때 사용
ex ) 변수의 컬럼명 출력
name <- c(names(exam)) for(n in name) { print(n) } # [1] "학번" # [1] "이름" # [1] "성적" |
ex ) 벡터 데이터 사용
score <- c(85, 95, 98) name <- c("홍길동", "이순신", "강감찬") i <- 1 for(s in score) { cat(name[i], " -> ", s, "\n") i <- i + 1 } # 홍길동 -> 85 # 이순신 -> 95 # 강감찬 -> 98 |
(2) while()함수
- for()함수는 반복 회수를 결정하는 변수를 사용.
- While()함수는 사용자가 블록 내에서 증감식을 이용하여 반복 회수를 지정해야 한다
- while(조건) { 실행문 }
ex ) while()함수 사용
i=0 while(i<10){ i<-i+1 print(i) } # [1] 1 # [1] 2 # [1] 3 # [1] 4 # [1] 5 # [1] 6 # [1] 7 # [1] 8 # [1] 9 # [1] 10 |
반응형
'Programming > R' 카테고리의 다른 글
[ R ] 주요 내장함수 (0) | 2022.11.18 |
---|---|
[ R ] 함수의 정의 (0) | 2022.11.18 |
[ R ] 연습문제 (3) (0) | 2022.11.17 |
[ R ] 데이터 입출력 (0) | 2022.11.17 |
[ R ] 연습문제 (2) (0) | 2022.11.16 |
Comments