본문 바로가기

데이터와 AI/R 기초

[R기초-2] 벡터의 연산, 함수, 논리값

반응형

대략적으로 앞에서 벡터를 다루고 특징을 이해했다면,

이번에는 벡터를 가지고 놀 차례다.

어렸을 적 산수놀이 하는 마음으로 정리해본다.

 

※ 함수 추가(수정일 : 2021-01-09)


1. 벡터의 사칙 연산

    - 일반적인 연산법칙과는 좀 다르게 적용됨을 유의해야 한다.

    - 좀 덜 엄격한 행렬연산과 비슷하다고 볼 수 있다.
    - 다른 연산은 직관적인데, 나눗셈은 '/'만 쓰지 않고 앞뒤로 '%'를 붙여줌에 유의해야 한다.

d<-c(1,2,3,7,8)
d+5      #각 원소에 5씩 더한다
d-5       #각 원소에서 5씩 뺀다.
d*5       #각 원소에 5씩 곱한다.
d%/%5  #각 원소를 5로 나눈 몫이 나온다. '/'기호 앞뒤에 '%'가 2개 있음을 주의
d%%5   #각 원소를 5로 나눈 나머지가 나온다. %가 2개 붙는다.

 

2. 벡터간 사칙 연산

    - 위치가 동일한 원소값끼리 연산됨을 주의한다.

a<-c(1,2,3,4,5)
b<-c(6,7,8,9,10)

a*b       # 출력해보면 6,14,24,36,50 이 나온다.
b%/%a  # 출력해보면 6,3,2,2,2 가 나온다.

 

3. 벡터의 논리 연산

    - 기본 연산 : 같다(==), 같지 않다(!=), A or B(A|B), A and B(A&B)

    - 응용 연산 : >=(크거나 같다), <=(작거나 같다)

a<-c(1,2,3,4,5)
b<-c(6,7,8,9,10)

#TRUE, FASLE가 나오는 경우
b>5               # TRUE가 5번 나온다. 즉 각 원소가 5보다 크면 TRUE, 아니면 FALSE를 출력한다.
a>b               # a의 원소들은 b보다 크지 않으므로 모두 FALSE가 5번 나온다
sum(a>3)        # a가 3보다 크면 TRUE, 아니면 FASLE를 출력한다. 이를 모두 합하므로 2가 된다
                      ※ TRUE는 1, FALSE는 0이다.
a==3             # a에 3이 있는 원소의 위치만 TRUE를 출력한다. FALSE FALSE TRUE FALSE FALSE로 나온다.
c<- a>2&a<5  # 3,4 위치가 TRUE로 나온다. FASLE FALSE TRUE TRUE FALSE로 나온다.

#값이 나오는 경우
a[a>3]            # a의 원소중 3보다 큰 원소를 출력한다. 4,5가 나온다.
sum(a[a>3])     # a의 원소중 3보다 큰 원소의 합을 출력한다. 9가 나온다.
a[a>2&a<5]     # 3,4가 출력된다.

 

4. 두 벡터의 연결

    - 별도 함수를 쓰진 않는다. 'c()'를 그냥 쓴다.

    - 이런 차이가 바로 언어의 유연함을 결정하는 것 같다.

a<-c(1,2,3,4,5)
b<-c(6,7,8,9,10)

c<-c(a,b)  # 출력해보면 1,2,3,4,5,6,7,8,9,10 이 나온다

 

5. 유용한 함수들

    - 아마 자주 쓰게되는 경우가 많아, 암기해두면 좋을 것 같다.

    - 기본적으로 수학적 통계에 대한 이해가 필요하다.

a<-c(1,2,3,4,5)
b<-c(6,7,8,9,10)

#증감에 관한 함수
rep(1,3)               # 첫번째 인수를, 두번째 인수만큼 반복한다. 1 1 1이 나온다
seq(1,3)               # 첫번째 인수부터 두번째 인수까지 +1씩 증가시킨다.
1:3                     # 위 함수의 초간단 버전이다
seq(1,11,by=2)      # 1부터 11까지 2씩 증가시킨다. 당연히 by에 음수를 넣으면 숫자만큼 감소한다.
seq(1,11,length=6) # 총 6개를 생성하는데, 1부터 11까지 자동으로 증가하도록 수열을 생성한다
                         # 1,3,5,7,9,11이 생성된다. 균등한 간격을 주기때문에 소수로 나올수도 있다.
seq(1,11,length=8) # 1.0 어쩌구부터, 아무튼 소수점으로 나온다.
rep(2:5,3)             # 뭐가 나올지 센스를 발휘해보자. 이제 감각으로 반응해야 한다.

#연산, 통계에 관한 함수
print(sum(a,b))      # a,b의 원소를 싹다 더한다. 55가 나온다
print(mean(a))       # a의 평균을 구한다. 입력 벡터가 1개임을 주의한다. 3이 나온다.
print(median(a))    # a의 중앙값을 구한다. 3이 나온다.
max(a);min(a)        # 굳이 설명 안해도 알 수 있을 것 같다.
var(a)                 # a의 분산(variance)을 구한다. 영문의 맨 앞 3자리를 따왔다.
sd(a)                  # a의 표준편차(standard deviation)을 구한다. 영문 맨 앞 한글자 씩 따왔다.
range(a)             # a에 있는 원소의 범위(최소값과 최대값)를 보여준다. 1,5가 나온다.

#기타 함수
summary(a)          # a에 대한 요약 정보(최소값,1분위값,중앙값,평균값,3분위값,최대값)를 출력한다.
sort(a)                # a를 정렬(sort)하는 데 디폴트가 오름차순이다.(decreasing=FALSE)
sort(a, decreasing=TRUE)  # decreasing이 TRUE이므로 내림차순으로 정렬된다. decreasing인자는 변경 불가하다.
length(a)             # a의 길이를 보여준다. 원소의 개수와 동일하다.
t(a)                    # a의 전치행렬(행과 열을 뒤바꿈)을 출력한다.
solve(행렬)          # a의 역행렬을 구한다. 참고로 행렬이 들어가야 한다. 아직은 벡터밖에 모른다.
help(함수명)        # 함수명을 입력하면 R Documentaion에 나온 정의를 보여준다. R studio 오른쪽 하단에 출력.

 

이 정도면 벡터에 대해서는 충분히 정리한 것 같다.

다음에는 메트릭스(Matrix)에 대해 정리해보겠다.

 

 

 

 

 

 

 

반응형