본문 바로가기
혼공학습단

[혼자 공부하는 R 데이터분석] 3주차_변수, 함수, 조건문, 반복문

by 섀싹 2024. 7. 18.

3-1. 변수와 함수

변수
파이썬과 개념 동일
R은 대문자와 소문자를 구별함. 함수를 호출할 때도 대문자와 소문자를 지켜야 한다.
<- : 할당 연산자 (단축키로 ALT + - 사용 가능)
함수
파이썬과 개념 동일
return() vs cat() : 함수 출력값은 동일하나 변수에 저장가능 여부가 다름
print() vs cat() : print 는 1개만 출력, cat 은 전부 출력

 

- 손코딩 내용

# 변수 할당
x <- 10
x

y <- "HI"
y

print("Hellow World")

# 내장함수 사용
a <- sum(1:100)
a

Sys.Date()

# 사용자 정의 함수 사용
multi_three_return <- function(x, y, z) {
  res <- x*y*z
  return(res)
}

 

- 113페이지 문제

# 4번
x <- c(1, 3, 5, 7, 9)
x

# 5번
y <- "Hello"
y
  
# 6번
num_three_return <- function(x, y, z) {
  res = x+y+z
  return(res)
}
num_three_return(10, 20, 30)

결과값

3-2. 패키지

함수 기능
install.packages(패키지명) 패키지 설치
library()/library(패키지명) 패키지 전체 목록 확인/특정패키지 로드(1회성, 새로 킬때마다 수행해야함)
remove.packages(패키지명) 패키지 삭제

https://cran.r-project.org/web/packages/available_packages_by_name.htm

 

CRAN: Available Packages By Name

 

cran.r-project.org

 

3-3. 조건문과 반복문

 

- 연산자 및 손코딩

종류 연산자 기능
할당 연산자 <- 변수에 값을 저장
산술 연산자 +, -, *, /, %/%, %%, ** or ^ 더하기, 빼기, 곱하기, 나누기, 몫, 나머지, 제곱수
관계 연산자 >, >=, <, <=, ==, !=, ! 크다, 크거나 같다, 작다, 작거나 같다, 같다, 같지 않다, 아니다
논리 연산자 &, | 그리고(and), 또는(or)
#할당 연산자
A <- 2
A
B = 10
B

# 정상 작동 (<- 가 우선순위 이므로 5가 먼저 D 에 할당됨)
C = D <- 5
C
D

# 오류 (<- 가 우선순위 이므로 E 가 먼저 G 에 할당됨) : 우선순위 조정필요
G <- E = 10

# = 경우 함수 인자로 할당 불가
sum(x <- 1)
x
sum(y = 1)
y

# 논리연산자 : 관계연산자로 얻은 진릿값 이용
x <- 1:3
y <- 3:1
(x>0) & (y>1)
(x>0) | (y>1)

 

- 조건문 및 손코딩

if-else 조건문, if-else if- else 조건문

# 조건문
a <- 10
if (a %% 2 == 0) {
  print("짝수입니다")
} else {
  print("홀수입니다")
}

b <- 80
if (b >= 90) {
  print("A 학점입니다")
} else if (b >= 80) {
  print("B 학점입니다")
} else {
  "C 학점입니다"
}

 

- 반복문 및 손코딩

- for () 함수

- apply() 함수

apply(x, margin, 함수) lapply(x, 함수) sapply(x, 함수)
행렬 연산에 사용
x에는 행렬을 넣고
margin 옵션이 1이면 행 2이면 열에
함수적용
연산 결과 리스트로 반환
모든 자료형에 사용 가능
연산 결과 벡터로 반환
모든 자료형에 사용 가
# 반복문
for (i in 1:9) {
  a <- 2*i
  print(a)
}

for (i in 2:9) {
  for (j in 1:9) {
    print(paste(i, "*", j, "+", i*j))
  }
}

x <- matrix(1:4, 2, 2)
x

apply(x, 1, sum)
apply(x, 2, min)
apply(x, 1, max)

# iris 데이터 이용해보기
str(iris)
View(iris)

apply(iris[, 1:4], 2, sum)
apply(iris[, 1:4], 2, mean)
apply(iris[, 1:4], 2, min)
apply(iris[, 1:4], 2, max)
apply(iris[, 1:4], 2, median)

lapply(iris[, 1:4], sum)
sapply(iris[, 1:4], sum)


- 143페이지 문제 2번

age <- 18
if (age<13) {
  print("어린이입니다.")
} else if (age<19) {
  print("청소년입니다")
} else {
  print("성인입니다.")
}