if~else문: 조건에 따라 둘 중 하나의 값 또는 변수를 선택할 때 사용

if(비교조건){
조건이 참일 떄 실행할 명령문(들)
}else{
조건이 거짓일 떄 실행할 명령문(들)
}

#기초코드 1
job.type <- 'A'
if(job.type=='B'){
  bonus <- 200 #직무 유형이 B일떄 실행
} else{ #else는 if문의 코드블록이 끝나는 부분에 있는 }와 같은 줄에 작성해야됨
  bonus <- 100#직무 유형이 B가 아닌 나머지 경우 실행
}
print(bonus)

 

for문

for(반복 변수 in 반복 범위){
반복할 명령문(들)
}

#기초코드3
for(i in 1:5){
  print('*')
}

for(i in 1:5){
  cat('*')#\n은 개행
}

 

 

while문: 어떤 조건이 만족하는 동안 코드블록을 수행하고, 해당 조건이 거짓일 경우 반복을 종료하는 명령문

while(비교 조건){
반복할 명령문(들)
}
#기초코드4
sum <- 0
i <- 
  while(i<=5){
    print(i)#i값이 계속1
  }

 

 

break: for문 밖으로 이동

#기초코드5
for(i in 1:5){
  if(i>=2)break #for문밖으로 이동
print(i)
}

 

 

next:특정 조건을 건너뛰고 반복

for(i in 1:10){
if(i%%2==0)next #짝수면 skip해서 for 문으로 이동  
print(i)
  }

 

apply()함수

- 반복 작업이 필요한 경우에는 반복문 적용

- 반복 작업의 대상이 매트릭스나 데이터프레임의 행, 또는 열인 경우는 for문이나 while대신 apply()함수 이용 가능

apply(데이터셋, 행/열방향 지정, 적용 함수)

mapply = matrix(1:6, nrow=2, ncol=3)
mapply
# 출력 결과:
#      [,1] [,2] [,3]
# [1,]    1    3    5
# [2,]    2    4    6

apply(mapply, 1, max) # row 방향으로 함수(최댓값) 적용
# 출력 결과:
# [1] 2 4 6

apply(mapply, 2, max) # col 방향으로 함수(최댓값) 적용
# 출력 결과:
# [1] 2 4 6

 

 

사용자 정의 함수 만들기

-R은 사용자들도 자신만의 함수를 만들어 사용할 수 있는 기능 제공

함수명<-function(매개변수 목록){
실행할 명령문(들)
return(함수의 실행 결과)
}
mymax <- function(x, y) { # x와 y를 입력으로 받는 mymax라는 함수를 정의
  num.max <- x            # num.max에 x 값을 초기화
  if (y > x) {           # y가 x보다 큰지 확인
    num.max <- y         # y가 더 크면 num.max를 y로 변경
  }
  return(num.max)        # num.max 값을 반환
}

mymax(2, 3)               # mymax 함수를 호출하여 2와 3을 인자로 전달
# 출력 결과:
# [1] 3                   # 3이 반환됨

 

조건에 맞는 데이터의 위치 찾기

-데이터 분석을 하다보면 자신이 원하는 데이터가 벡터나 매트릭스, 데이터 프레임 안에서 어디에 위치하고 있는지를 알기 원하는 때가 있음,

-예를 들어 50명의 학생 성적이 저장된 벡터가 있는데 가장 성적이 좋은 학생은 몇번쨰에 있는지 알고 싶은 경우

이런경우 편리하게 사용할 수 있는 함수: which(), which.max(), which.min()함수

 

score <- c(71, 88, 84)  # 성적 벡터 생성

which(score == 88)      # 성적이 88인 학생은 몇 번째에 있나
# 출력 결과:
# [1] 2                   # 88은 2번째 학생

which(score >= 70)      # 성적이 70 이상인 학생은 몇 번째에 있나
# 출력 결과:
# [1] 1 2 3               # 70 이상인 학생은 1, 2, 3번째

which.max(score)        # 최고 점수는 몇 번째에 있나
# 출력 결과:
# [1] 2                   # 최고 점수는 88로 2번째 학생

which.min(score)        # 최저 점수는 몇 번째에 있나
# 출력 결과:
# [1] 1                   # 최저 점수는 71로 1번째 학생

 

 

종합문제

#문제 1: 성별에 따른 문자열 할당
gender.type <- 'M'                # 성별을 'M'으로 설정
if (gender.type == 'F') {         # 성별이 'F'인지 확인
  g <- '여성'                     # 여성일 경우 g에 '여성' 할당
} else {                          # 그렇지 않으면
  g <- '남성'                     # g에 '남성' 할당
}
print(g)                          # g 출력
# 출력 결과:
# [1] "남성"

#문제 2: ifelse를 이용한 성별 할당
gender.type <- 'M'                # 성별을 'M'으로 설정
g <- ifelse(gender.type == 'F', '여성', '남성')  # 성별에 따라 g에 값 할당
print(g)                          # g 출력
# 출력 결과:
# [1] "남성"

#문제 3: 별 찍기 패턴 (for문)
for(i in 1:5) {                    # 1부터 5까지 반복
  for(j in 1:i) {                  # i에 따라 j를 1부터 i까지 반복
    cat('*')                       # '*' 출력
  }
  cat('\n')                       # 줄바꿈
}
# 출력 결과:
# *
# **
# ***
# ****
# *****

#문제 4: 별 찍기 패턴 (while문)
i <- 1                             # i를 1로 초기화
while(i <= 5) {                   # i가 5 이하일 때까지 반복
  j <- 1                           # j를 1로 초기화
  while (j <= i) {                # j가 i 이하일 때까지 반복
    cat('*')                      # '*' 출력
    j <- j + 1                    # j 증가
  }
  cat('\n')                       # 줄바꿈
  i <- i + 1                      # i 증가
}
# 출력 결과:
# *
# **
# ***
# ****
# *****

#문제 5: 반복문에서 break와 next 사용
for(i in 1:5){                    # 1부터 5까지 반복
  if(i %% 4 == 0) break           # i가 4의 배수일 때 반복 종료
  print(i)                       # i 출력
}
# 출력 결과:
# [1] 1
# [1] 2
# [1] 3

for(i in 1:10){                   # 1부터 10까지 반복
  if(i %% 3 != 0) next           # i가 3의 배수가 아닐 경우 다음 반복으로
  print(i)                       # i 출력
}
# 출력 결과:
# [1] 3
# [1] 6
# [1] 9

#문제 6: 데이터프레임의 열 합계 계산
msleep = data.frame(study = c(1, 2, 3), sleeping = c(7, 8, 9))  # 데이터프레임 생성
msleep
# 출력 결과:
#   study sleeping
# 1     1       7
# 2     2       8
# 3     3       9

apply(msleep, 2, sum)            # 각 열의 합 계산
# 출력 결과:
# study sleeping 
#     6       24

#문제 7: 함수 정의와 호출
namef <- function(name1) {        # name1을 인자로 받는 함수 정의
  for(i in 1:5) {                 # 1부터 5까지 반복
    print(name1)                  # name1 출력
  }
}
namef('kdh')                      # 'kdh'를 인자로 함수 호출
# 출력 결과:
# [1] "kdh"
# [1] "kdh"
# [1] "kdh"
# [1] "kdh"
# [1] "kdh"

#문제 8: 벡터의 특정 값 위치 찾기
value1 <- c(100, 200, 300)        # 값 벡터 생성
which(value1 == 300)              # 300의 위치 찾기
# 출력 결과:
# [1] 3
which.max(value1)                 # 최대값의 위치 찾기
# 출력 결과:
# [1] 3
which.min(value1)                 # 최소값의 위치 찾기
# 출력 결과:
# [1] 1

#문제 9: 구구단 9단 출력
for(i in 1:9){                    # 1부터 9까지 반복
  cat('9*', i, '=', 9 * i, '\n')   # 구구단 9단 출력
}
# 출력 결과:
# 9* 1 = 9
# 9* 2 = 18
# 9* 3 = 27
# 9* 4 = 36
# 9* 5 = 45
# 9* 6 = 54
# 9* 7 = 63
# 9* 8 = 72
# 9* 9 = 81

#문제 10: 구구단 8단 출력
i <- 1                             # i를 1로 초기화
while(i < 10) {                   # i가 10 미만일 때 반복
  cat('8*', i, '=', 8 * i, '\n')   # 구구단 8단 출력
  i <- i + 1                      # i 증가
}
# 출력 결과:
# 8* 1 = 8
# 8* 2 = 16
# 8* 3 = 24
# 8* 4 = 32
# 8* 5 = 40
# 8* 6 = 48
# 8* 7 = 56
# 8* 8 = 64
# 8* 9 = 72

#문제 11: 1부터 100까지 반복하며 3의 배수 출력
for(i in 1:100){                  # 1부터 100까지 반복
  result <- ifelse(i %% 3 == 0, '*', i)  # i가 3의 배수면 '*'로, 아니면 i로 설정
  cat(result, '')                  # 결과 출력
}
# 출력 결과:
# 1 2 * 4 5 * 7 8 * 10 11 * 13 14 * ... (3의 배수는 '*'로 출력)

'R' 카테고리의 다른 글

벡터&매트리스&데이터프레임  (0) 2025.03.27
R의 기본연산/ 변수/ 벡터의 이해  (0) 2025.03.08

벡터에 적용 가능한 함수

# 코드 3
d <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)  # 벡터 d를 생성
sum(d)  # d의 모든 요소를 더함
# [1] 55

sum(2 * d)  # d의 모든 요소를 2배로 늘린 후 더함
# [1] 110

length(d)  # d의 요소 개수를 반환
# [1] 10

mean(d[1:5])  # d의 첫 5개 요소의 평균을 계산
# [1] 3

max(d)  # d의 최대값을 반환
# [1] 10

min(d)  # d의 최소값을 반환
# [1] 1

sort(d)  # d를 오름차순으로 정렬
# [1]  1  2  3  4  5  6  7  8  9 10

sort(d)  # 동일한 결과를 다시 출력
# [1]  1  2  3  4  5  6  7  8  9 10

sort(d, decreasing = FALSE)  # d를 오름차순으로 정렬 (기본값)
# [1]  1  2  3  4  5  6  7  8  9 10

sort(d, decreasing = TRUE)  # d를 내림차순으로 정렬
# [1] 10  9  8  7  6  5  4  3  2  1

v1 <- median(d)  # d의 중앙값을 계산
v1  # 중앙값 출력
# [1] 5.5

v2 <- sum(d) / length(d)  # d의 평균을 계산 (합계 / 요소 개수)
v2  # 평균 출력
# [1] 5.5

벡터에 논리연산자 적용

# 코드 4
d <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)  # 벡터 d를 생성

d >= 5  # d의 각 요소가 5 이상인지 확인
# [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE

d[d > 5]  # d에서 5보다 큰 요소만 선택
# [1] 6 7 8 9

sum(d > 5)  # d에서 5보다 큰 요소의 개수를 계산
# [1] 4

sum(d[d > 5])  # d에서 5보다 큰 요소의 합을 계산
# [1] 30

d == 5  # d의 각 요소가 5와 같은지 확인
# [1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE

condi <- d > 5 & d < 8  # d의 요소가 5보다 크고 8보다 작은 조건
d[condi]  # 조건을 만족하는 d의 요소 선택
# [1] 6 7

리스트(List)

-다양한 데이터 유형의 요소 저장(동일값 저장, 여러 자료형을 혼합, 중복 가능)

-서로 다른 자료형의 값들을 1차원 배열에 저장하고 다룰 수 있도록 해주는 수단

- $,  [[]] 를 사용

ex)필통 안에 연필, 지우개, 색연필이 다 들어 있는 것처럼, 리스트는 다양한 데이터를 한 곳에 모아 놓은 것

# 코드 6
# 리스트 생성
my_list <- list(name = "john", age = 25, scores = c(88, 92, 95))  # 이름, 나이, 점수를 포함한 리스트 생성

# 리스트의 요소에 접근
print(my_list$name)  # name 요소 출력
# [1] "john"

print(my_list$age)  # age 요소 출력
# [1] 25

print(my_list$scores)  # scores 요소 출력
# [1] 88 92 95

팩터(factors)

-하나의 데이터형(동일값 없음, 중복X(단일 품목))

-벡터의 일존으로서 값의 종류가 정해져 있는 범주형 자료의 저장에 사용

-범주형 자료 예시: 성별, 혈액형, 선호 계절 등

ex)필통 안의 물건들을 "연필", "지우개", "색연필"로 분류한 것처럼, 팩터는 데이터를 특정 그룹으로 나누어 정리한 것

 

*R 데이터 구조 비교

: 리스트: 다양한 타입의 상자

팩터: 미리 정해진 카테고리를 가진 상자

# 코드 8
# 팩터 생성
colors <- factor(c("red", "blue", "green", "red", "blue"))  # 색상 벡터를 팩터로 변환

# 팩터 출력
print(colors)  # 생성된 팩터 출력
# [1] red   blue  green red   blue 
# Levels: blue green red  (팩터의 레벨이 출력됨)

# 팩터의 레벨 확인
levels(colors)  # 팩터의 레벨을 확인
# [1] "blue"  "green" "red"  

# 팩터의 각 레벨에 대한 빈도수 확인
table(colors)  # 각 레벨에 대한 빈도수를 계산
# colors
#  blue green   red 
#     2     1     2

매트릭스

-1차원 데이터: 몸무게 데이터와 같은 단일 주제의 데이터-> 벡터

-2차원 데이터: 키, 나이,와 같은 여러 주제의 데이터-> 매트릭스, 데이터프레임

                   -데이터 테이블의 모든 셀의 값들이 동일한 자료형->매트릭스

                   -자료형이 다른 값들로 구성->데이터프레임

 

 

 

 

-기존 매트릭스에 벡터를 추가해, 새로운 매트릭스 만들기

 

-cbind(벡터1, 벡터2)->벡터1과 벡터2를 열방향으로 결합

-rbind(벡터1, 벡터2)->벡터1과 벡터2를 행방향으로 결합

# 코드 11
x <- c(1:4)  # 벡터 x 생성
y <- c(5, 8)  # 벡터 y 생성
z <- matrix(1:20, nrow = 4, ncol = 5)  # 매트릭스 z 생성

m1 <- cbind(x, y)  # x와 y를 열 방향으로 결합하여 매트릭스 생성
m1  # 매트릭스 m1의 내용을 출력
#     [,1] [,2]
# [1,]    1    5
# [2,]    2    8
# [3,]    3   NA
# [4,]    4   NA

m2 <- rbind(x, y)  # x와 y를 행 방향으로 결합하여 매트릭스 생성
m2  # 매트릭스 m2의 내용을 출력
#     [,1] [,2] [,3] [,4]
# [1,]    1    2    3    4
# [2,]    5   NA   NA   NA

m4 <- cbind(z, x)  # 매트릭스 z와 벡터 x를 열 방향으로 결합
m4  # 매트릭스 m4의 내용을 출력
#      [,1] [,2] [,3] [,4] [,5] [,6]
# [1,]    1    5   9   13   17    1
# [2,]    2    6  10   14   18    2
# [3,]    3    7  11   15   19    3
# [4,]    4    8  12   16   20    4

# 코드 12
z <- matrix(1:20, nrow = 4, ncol = 5)  # 매트릭스 z 생성
z  # 매트릭스 z의 내용 출력
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    5    9   13   17
# [2,]    2    6   10   14   18
# [3,]    3    7   11   15   19
# [4,]    4    8   12   16   20

# 특정 값 접근
z[2, 3]  # 2행 3열에 있는 값
# [1] 10

z[1, 4]  # 1행 4열에 있는 값
# [1] 13

z[2, ]   # 2행에 있는 모든 값
# [1]  2  6 10 14 18

z[, 4]   # 4열에 있는 모든 값
# [1] 13 14 15 16

# 코드 13
z[2, 1:3]  # 2행의 값 중 1~3열에 있는 값
# [1]  2  6 10

z[1, c(1, 2, 4)]  # 1행의 값 중 1, 2, 4열에 있는 값
# [1]  1  5 13

z[1:2, ]  # 1, 2행에 있는 모든 값
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    5    9   13   17
# [2,]    2    6   10   14   18

z[, c(1, 4)]  # 1, 4열에 있는 모든 값
#      [,1] [,2]
# [1,]    1   13
# [2,]    2   14
# [3,]    3   15
# [4,]    4   16

# 코드 14
score <- matrix(c(90, 85, 69, 78, 85, 96, 49, 95, 90, 80, 70, 60), nrow = 4, ncol = 3)
rownames(score) <- c('John', 'Tom', 'Mark', 'Jane')  # 행 이름 설정
colnames(score) <- c('English', 'Math', 'Science')  # 열 이름 설정
score  # score 매트릭스 출력
#        English Math Science
# John       90   85      69
# Tom        78   85      96
# Mark       49   95      90
# Jane       80   70      60

# 코드 15
score['John', 'Math']  # John의 수학 성적
# [1] 85

score['Tom', c('Math', 'Science')]  # Tom의 수학, 과학 성적
# Math Science 
#   85      96

score['Mark', ]  # Mark의 모든 과목 성적
# English Math Science 
#      49   95      90

score[, 'English']  # 모든 학생의 영어 성적
# [1] 90 78 49 80

rownames(score)  # score의 행 이름
# [1] "John" "Tom"  "Mark" "Jane"

colnames(score)  # score의 열 이름
# [1] "English" "Math"    "Science"

colnames(score)[2]  # score의 열 이름 중 두 번째 값
# [1] "Math"

데이터프레임

-숫자형 벡터, 문자형 벡터 등 서로 다른 형태의 데이터를 2차원 데이터 테이블 형태로 묶을 수 있는 자료구조

-외관상으로는 매트릭스와 차이가 없지만 매트릭스에 저장되는 모든 값들이 동일한 자료형(ex 모두 숫자)인과는 달리 

데이터프레임에는 서로다른 자료형의 값들이 함께 저장(ex 성별, 나이 등)

 

 

-자료형이 같을 수도 있고 다를 수도 있는 여러 개의 벡터를 세로 방향으로 묶어 놓은 개념

data.frame(벡터1, 벡터2)

# 코드 16
city <- c("Seoul", "Tokyo", "Washington")  # 문자로 이루어진 벡터
rank <- c(1, 3, 2)  # 숫자로 이루어진 벡터
city.info <- data.frame(city, rank)  # 데이터프레임 생성
city.info  # city.info의 내용 출력
#          city rank
# 1      Seoul    1
# 2      Tokyo    3
# 3 Washington    2

 

iris데이터셋

-R에서 제공하는 실습용 데이터셋 중의 하나로 데이터프레임으로 되어 있음

-150그루의 붓꽃에 대한 4개의 분야의 측정데이터와 품목 정보를 결합하여 만든 데이터셋(통계학과 머신러닝에서 널리 사용되는 유명한 실습용 데이터셋)

# 코드 17
iris[, c(1, 2)]  # 1, 2열의 모든 데이터
#   Sepal.Length Sepal.Width
# 1           5.1          3.5
# 2           4.9          3.0
# 3           4.7          3.2
# 4           4.6          3.1
# 5           5.0          3.6

iris[, c(1, 3, 5)]  # 1, 3, 5열의 모든 데이터
#   Sepal.Length Petal.Length Species
# 1           5.1          1.4  setosa
# 2           4.9          1.4  setosa
# 3           4.7          1.3  setosa
# 4           4.6          1.5  setosa
# 5           5.0          1.4  setosa

iris[, c("Sepal.Length", "Species")]  # 1, 5열의 모든 데이터
#   Sepal.Length Species
# 1           5.1  setosa
# 2           4.9  setosa
# 3           4.7  setosa
# 4           4.6  setosa
# 5           5.0  setosa

iris[1:5, ]  # 1~5행의 모든 데이터
#   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1           5.1          3.5          1.4         0.2  setosa
# 2           4.9          3.0          1.4         0.2  setosa
# 3           4.7          3.2          1.3         0.2  setosa
# 4           4.6          3.1          1.5         0.2  setosa
# 5           5.0          3.6          1.4         0.2  setosa

iris[1:5, c(1, 3)]  # 1~5행의 데이터 중 1, 3열의 데이터
#   Sepal.Length Petal.Length
# 1           5.1          1.4
# 2           4.9          1.4
# 3           4.7          1.3
# 4           4.6          1.5
# 5           5.0          1.4

'R' 카테고리의 다른 글

조건문, 반복문, 함수  (0) 2025.04.05
R의 기본연산/ 변수/ 벡터의 이해  (0) 2025.03.08

-기본연산

연산자 의미
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
%% 나눗셈 나머지
^ 제곱

 

 

-산술연산 함수

 

 

함수 의미
log() 로그함수
sqrt() 제곱근
max() 가장 큰 값
min() 가장 작은 값
abs() 절댓값
factorial() 팩토리얼
sin(), cos(), tan() 삼각함수

 

 

 

1. 변수명 지정방법

- 첫글자는 영문자 또는 마침표로 시작(일반적으로 영문자)

- 두번째 글자부터는 영문자, 숫자 , 마침표, 밑줄 사용가능(특수문자 사용불가)

- 대문자, 소문자 구분

- 변수명 중간에 변수명 사용 불가

 

+)변수명 저장할때 alt+-누르면 <-가 입력됨

 

2.변수의 자료형

 

-특수값

  • NULL/
  • NA(결측값)
  • NAN(수학적으로 정의 불가능한 값) ex) sqrt(-3)
  • Inf,-Inf (양의 무한대(Inf)/ 음의 무한대(-Inf))

 

3. 변수값은 변경 가능

 

 


1. 벡터의 개념

 

 

1차원 배열: 벡터(vector)로 표현

ex) 1학년의 영어 성적 자료

 

2차원 배열: 매트릭스(martix) 또는 데이터 프레임(data frame)으로 표현

 

 

2. 벡터 만들기

 

-c는 "combine"의 약자, 여러 값을 하나의 벡터로 결합하는 데 사용

w <-c(1,2,3,"a","b","c") 
w #[1]"1""2""3""a""b"c"

*출력 결과 앞에 [1]은  [1]은 "1"이 벡터의 첫 번째 요소를 뜻함(인덱스)

+) R은 인덱스가 1부터 시작함

 

 

-연속적인 숫자로 이루어진 벡터 생성

v1 <- c(1,2,3,50:60)
v1 #[1]  1  2  3 50 51 52 53 54 55 56 57 58 59 60

 

 

- seq() 함수

일정한 간격의 숫자로 이루어진 벡터 생성 

v3 <- seq(1, 10, 3) 
v3 # [1] 1 3 6 9

 

 

-rep() 함수

반복된 숫자로 이루어진 벡터 생성

v5 <- rep(1, times = 5)  # 1을 5번 반복
v5 # 출력 결과: [1] 1 1 1 1 1

v6 <- rep(1:5, times = 3)  # 1에서 5까지 3번 반복
v6 # 출력 결과: [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

v7 <- rep(c(1, 2, 3), times = 3)  #1, 2, 3을 하나의 벡터로 묶고/ 1, 2, 3을 3번 반복
v7 # 출력 결과: [1] 1 2 3 1 2 3 1 2 3

 

 

-names()

벡터에 저장된 값에 이름을 부여할 경우

score <- c(90, 85, 70)  # 점수 벡터 생성
score# 출력 결과: [1] 90 85 70

names(score)  # 현재 이름 확인
# 출력 결과: NULL (아직 이름이 지정되지 않음)

names(score) <- c("John", "Tom", "Jane")  # 점수에 이름 지정
names(score)  # 이름 확인
# 출력 결과: [1] "John" "Tom"  "Jane"

score  # 최종 점수 벡터 출력
# 출력 결과: 
# John Tom Jane 
#  90  85  70

 

 

-벡터에서 원소 값 추출방법

d <-c(1,4,5,7)
d[1] #d의 첫번째 값 출력
#출력결과: [1] 1

d[2] #d의 두번째 값 출력
#출력결과: [1] 4

*벡터에서 []는 요소를 선택하거나 추출

 

 

-여러 값 한번에 추출

d <- c(1, 4, 5, 7, 8)  # 벡터 d 생성

d[c(1, 3, 5)]  # 1번째, 3번째, 5번째 요소 선택
# 출력 결과: [1] 1 5 8

d[1:3]  # 1번째부터 3번째 요소 선택
# 출력 결과: [1] 1 4 5

d[seq(1, 5, 2)]  # 1부터 5까지 2씩 증가하는 인덱스 선택
# 출력 결과: [1] 1 5 8

d[-2]  # 2번째 요소를 제외한 나머지 요소 선택
# 출력 결과: [1] 1 5 7 8

d[-c(3:5)]  # 3번째부터 5번째 요소를 제외한 나머지 요소 선택
# 출력 결과: [1] 1 4

 

 

 

-벡터에서 이름으로 값 추출

GNP <- c(2090, 2450, 960)  # GNP 벡터 생성
GNP
# 출력 결과: [1] 2090 2450  960

names(GNP) <- c("Korea", "Japan", "Nepal")  # GNP에 이름 지정
GNP
# 출력 결과: 
# Korea  Japan  Nepal 
# 2090  2450   960 

GNP[1]  # 1번째 요소 선택
# 출력 결과: [1] 2090

GNP["Korea"]  # "Korea"에 해당하는 요소 선택
# 출력 결과: Korea 
# 2090 

GNP[c("Korea", "Nepal")]  # "Korea"와 "Nepal"에 해당하는 요소 선택
# 출력 결과: 
# Korea  Nepal 
# 2090   960

 

 

 

-벡터의 저장된 원소 값 변경

v1 <- c(1, 5, 7, 8, 9)  # v1 벡터 생성
v1
# 출력 결과: [1] 1 5 7 8 9

v1[2] <- 3  # 2번째 요소를 3으로 변경
v1
# 출력 결과: [1] 1 3 7 8 9

v1[c(1, 5)] <- c(10, 20)  # 1번째 요소를 10으로, 5번째 요소를 20으로 변경
v1
# 출력 결과: [1] 10  3  7  8 20

'R' 카테고리의 다른 글

조건문, 반복문, 함수  (0) 2025.04.05
벡터&매트리스&데이터프레임  (0) 2025.03.27

+ Recent posts