반응형
대략적으로 앞에서 벡터를 다루고 특징을 이해했다면,
이번에는 벡터를 가지고 놀 차례다.
어렸을 적 산수놀이 하는 마음으로 정리해본다.
※ 함수 추가(수정일 : 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)에 대해 정리해보겠다.
반응형
'데이터와 AI > R 기초' 카테고리의 다른 글
[R기초-6] R sudio를 통해 파일 읽고 쓰기 (0) | 2021.01.11 |
---|---|
[R기초-5] Matrix 및 Data Frame의 연산 및 함수 (0) | 2021.01.11 |
[R기초-4] Data Frame 생성 및 이용 (0) | 2021.01.08 |
[R기초-3] Matrix란 (0) | 2021.01.07 |
[R기초-1] 벡터의 정의와 함수 (2) | 2020.12.22 |