본문 바로가기
기본적인프로그래밍/R

[R] 쉽게 배우는 R programming 기초 (1) (vector, matric)

by 인포메틱스 2020. 6. 22.
반응형

R에서 기본적인 것들을 배워 보도록 하겠습니다.

 

항상 프로그래밍 하면서 느낀것이지만, 기본이 중요하다고 생각합니다. !!

 

기초를 잘 알면 어떤 알고리즘이라도 만들 수가 있다고 생각합니다.


1. R vector

a <- 1
a = 1
b <- 2
b = 2

a를 1이라고 지정을 하고, b를 2라고 지정을 할 수가 있습니다.

 

지정을 할때는, "<-" or " = " 을 이용해서 지정할 수가 있습니다.

 

그리고 이를 더 할 수도 있습니다.

 

R studio에서 실습한것

또한 vector에다가 여러 숫자들을 추가 할 수가 있습니다.

a<-c(1,2,3,4)
b<-c(4,3,2,1)

 

마찬가지로 두 vector를 더할 수가 있습니다. (당연히 빼기 나누기 곱하기 다 됩니다.)

여러 벡터가 있을경우 a[1],b[1] a[2],b[2] a[3],b[3] a[4],b[4] 이런 식으로 같은 위치의 숫자끼리 사칙연산이 됩니다.

 

벡터의 길이가 다를경우에는?!

 

 

다음과 같이 짧은 vector가 순서대로 중복되어 사칙연산이 되는것을 확인할 수가 있다.

(아래와 같이 적용이 모두 안될경우에는 warning 이 뜨지만, 결과적으로는 잘 더해졌다.)

 

 

2. matrix

우리가 데이터를 다루면서 많이 보게될 데이터형 중 하나입니다.

 

matrix(data,nrow,ncol,byrow,dimnames)

data = 숫자든 뭐든 넣을 수가 있습니다.

nrow = 몇번째 줄로 만들것이냐

ncol = 몇번째 열로 만들것이냐

byrow = 줄을 먼저 채울 것이다!

dimnames = 행,열 이름을 정하기! (굳이 이걸 안해도 다른방식으로 할 수 있음) 

dimnames = list(c(rowname),c(colname))이런식으로 기입해야함. 그리고 row,column개수와 이름개수가 동일하게 작성해야함.

 

 

1~10까지 2행 5열의 matrix를 만들고 싶을 경우!

matrix(data=c(1,2,3,4,5,6,7,8,9,10),nrow=2,ncol=5)

 

자료를 row부터 순서대로 넣고싶다!

 

matrix(data=c(1,2,3,4,5,6,7,8,9,10),nrow=2,ncol=5,byrow=T)

이름을 지정하고싶다.

 

matrix(data=c(1,2,3,4,5,6,7,8,9,10),nrow=2,ncol=5,byrow=T,dimnames = list(c('a','b'),c('A1','A2','A3','A4','A5')))

 

dimname으로 지정하였으나, 바꾸고싶을경우!

 

2-1 dimname(matrix) 을 이용하는 방법. (똑같이 list로 지정해야함)

2-2 colnames(matrix) or rownames(matrix)를 이용하는 방법 (column 개수와 colnames개수가 같아야함, row도 동일)

matrix의 특징

 2-1 내부에 type들이 같다.

 2-2 내부의 벡터들이 하나라도 변경이 되면 모두가 변경이 된다.

 2-3 앞서 보았듯이 좌표형식으로 지정해서 벡터를 가져올 수도 있고, 혹은 바꿀 수도 있다.

 1개의 벡터때문에 character로 변경된걸 다시 돌리는 방법은 모두 숫자로 바꾸고, 따음과 같이 하면된다.

 2-4 벡터와 마찬가지고 사칙연산이 가능하다.

 n×n이 같을경우 같은 좌표끼리 더해짐. 벡터를 더 할경우 row를 기준으로 더해짐.

 이 경우는 잘 사용하지 않기 때문에, 그림보시고 이해를 하시면 됩니다. (이해가 안되시면 패스하셔도 문제없습니다!)

 

※ type이란?

 type이란 숫자형(numeric, double), 글자형(character)과 같은 벡터의  특징을 이야기함. 여러 종류들이 있음.

 벡터의 타입을 확인하기 위해선 typeof라는것을 쓰면된다.

 

※class란?

 type과 마찬가지다. 그러나 좀 더 자세하게 알려준다.

 

 


 

포스팅이 길어져서 내일 다시 포스팅 하도록 하겠습니다!! 

내일은 data.frame,list,array,factor이렇게 3개에 대해서 포스팅하도록하겠습니다.

 

감사합니다.

728x90
반응형

댓글