목차
Hello world
변수명 <- 변수 값 으로 해당 객체에 대해 값을 지정할 수 있다.
sen <- 'hello world!'
print(x=변수명) 으로 해당 객체를 터미널에 출력할 수 있다.
print(x=sen)
class(x=변수명) 으로 해당 객체에 등록된 값의 자료형과 자료구조를 출력한다.
class(x=sen)
length() 함수 안에 객체 이름를 넣고 실행하면 원소의 갯수를 반환한다.
length(x= sen)
print('hello world!')
1 + 1
a <- 2 * 2
print(a)
R script를 작성하여 한번에 실행 할 수 있다.
객체 생성 규칙
- 객체 명은 숫자로 시작하면 에러가 발생한다. 단, 백틱(`)으로 감싸주면 에러가 발생하지 않는다.
- 백틱 대신 따옴표('', "")를 사용하여 감싸주어도 객체 명을 숫자로 시작할 수 있다. 단, 함수 안에서 따옴표의 내용은 문자열로 인식된다.
자료구조
데이터를 담는 그릇
자료구조를 이해해야 원하는 코드를 자신의 데이터에 적용할 수 있다.
R의 자료 구조로는 벡터, 행렬, 배열, 데이터 프레임, 리스트가 있다.
자료구조의 원소 값으로 정수, 실수, 문자열 등을 가질 수 있다.
벡터
같은 자료형의 스칼라 원소를 갖는 1차원 자료구조이다.
스칼라는 원소가 1개인 벡터를 의미한다.
숫자1 | 숫자2 | 숫자3 | 숫자4 | 숫자5 | ... |
---|
자료형
- 실수형 : 허수를 포함하는 복소수가 아닌 숫자
- 정수형 : 소수점이 없는 숫자, 숫자 뒤에 L을 붙여야 정수형으로 표현(123L)
- 문자형 : 따옴표("", '')로 감싼 문자열
- 논리형 : 따옴표가 없는 TRUE(T), FALSE(F) 만 있는 자료형
- 범주형 : 4자기 자료형을 명목형으로 변환하면 범주가 된다.
- NA : Not Avaliable
- NULL : 정해진 값이 없어 길이가 0인 객체
- NaN : Not a Number
- Inf : 무한(infinite)특징
- 원소의 자료형이 모두 같다.* 자료형이 다른 스칼라, 벡터를 추가하면 자동으로 자료형이 강제 변환한다.
강제 변환의 경우 논리형, 범주형 -> 정수형 -> 실수형 -> 문자형 반향으로 일어난다.
벡터 생성
- 문자형과 논리형 벡터 생성 : c()
print(x='1. 벡터 생성')
a <- c(1L,2L,3L)
print(x=a)
class(x=a)
a <- c(1,2,3)
print(x=a)
class(x=a)
print(x = 101:150)
a<-c()
print(a)
- 범주형 벡터 생성 : factor(), as.factor()
nat <- c('ko','jp','ch','usa','ko','usa','jp') print(x =nat) fct <- as.factor(x=nat) print(x = fct)
범주가 Level 로 생성된다. 이 범주에 대해 순서를 지정할 수 있다.
fct <- factor(x=nat, levels = c('ko','usa','ch','jp'))
print(x=fct)
as.integer(x=fct)
- 원소를 연속되는 벡터 생성 : seq()
seq(from = 처음 숫자, to = 마지막 숫자, by= 간격, length.out =반환되는 벡터의 길이)- from, to, by, length.out 는 생략할 수 있다.
- by와 length.out 은 같이 쓰일 수 없다.(에러 발생)
seq(from =1, to =3, by = 1)
1:3
seq(from = 3, to = 1, by = -1)
seq(from =1, to = 10, by= 2.5)
seq(from =1, to= 10, length=19)
seq(1,3,1)
seq(3)
seq(1,3,1,length.out=5)
seq(1,3,length.out=5)
- 원소가 반복되는 벡터 생성 : rep()
req(x=반복할 스칼라 또는 벡터, times=x에 지정된 벡터 전체를 반복할 횟수, each = 각원소 반복 횟수, length.out = 길이)
rep(x=1, times=3)
rep(x=1:3, times=3)
rep(x=1:3, each=3)
rep(x=1:3, length=10)
rep(x=1:3, 3, each=2)
rep(x=1:3, 3, each=2, length=10)
벡터 원소 선택
- 인덱싱(indexing)을 통해 벡터 원소의 위치번호를 지정하여 일부를 선택한다.
벡터 객체명[인덱스]
를 통해 특정 원소를 선택할 수 있다.
print(x=letters)
# vector의 내장 문자형 벡터 letters 사용
# a~b 출력
# 인덱스로 특정 위치의 값 출력
letters\[1\]
- 슬라이싱(slicing)은 콜론(:)을 이용하여 연속된 벡터의 원소를 선택한다.
s <- letters[1:5]
print(x=s)
- 팬시 인덱싱(fancy indexing)은 대괄호 안에 정수형 벡터를 지정하는 방식이다. 원소의 인덱스를 가리키는 값을 선택한다.
s <- letters[1:5]
s[c(1,2,5)]
- 불리언 인덱싱(boolean indexing)은 대괄호 안에 논리형 벡터를 지정한다. true에 해당하는 원소를 선택한다.
s <- letters[1:5]
s[c(TRUE, FALSE, TRUE, FALSE, TRUE)]
벡터 원소 추가
s <- letters\[1:5\]
s\[6\] <- 'f'
print(x=s)
s\[10\] = 'j'
print(x=s)
벡터 원소 삭제
값을 삭제할 때는 객체이름[-인덱스값]
으로 할 수 있다. 원소를 완전 삭제하기 위해서 삭제한 객체를 원하는 벡터 객체에 재할당 해야한다.
s <- letters\[1:5\]
s\[-10\]
print(x=s)
# 재할당
s<-s\[-10\]
print(x=s)
벡터 원소 변경
- 인덱싱
s <- letters[1:5] s[1] <- 'A' print(x = s) s[2] <- 'B' print(x = s)
- 슬라이싱
s[1:2] <- c('가','나') print(x=s)
- 범주형 벡터 원소 변경
levels(x=fct)
levels(x = fct)[5] <- 'taipei'
fct[8]<-'taipei'
print(x=fct)
형변환
- 정수 형변환 : as.integer()
as.integer(x=1.2) as.integer(x='1.2') as.integer(x=FALSE) #TRUE =1, FALSE = 0
- 실수 형변환: as.numberic()
as.numeric(x=1L)
as.numeric(x='1.2')
as.numeric(x=TRUE)
- 문자열 형변환 : as.character()
as.character(x=1L)
as.character(x=1.2)
as.character(x=TRUE)
- 논리형 형변환 : as.logical()
as.logical(x=0) as.logical(x=1.2) as.logical(x='1.2')
- 범주형 형변환 : as.factor()
e <- as.factor(x = nat)
print(x=e)
class(x=e)
as.integer(x=e)
강제변환
벡터는 같은 자료형의 원소를 가진다. 자료형이 다른 두 벡터를 합치면 공통 자료형으로 강제 변환된다.
c <- c('hello','world')
d <- c(FALSE, TRUE)
e <- as.factor(x=c)
f <- c(d,e)
print(d,e)
print(x=f)
class(x=f)
f <- c(f,3)
print(x=f)
class(x=f)
f<- c(f,'4')
print(x=f)
class(x=f)
산술연산자
두 숫자형 벡터 사이에 산술 연산자를 추가하여 덧셈,뺄셈, 곱셈, 나눗셈 등을 할 수 있다.
a+b | 더하기 |
a-b | 빼기 |
a*b | 곱하기 |
a^b | 거듭제곱 |
a/b | 나누기 |
a%%b | 나머지 반환 |
a%/%b | 몫 반환 |
비교 연산자
a>b | TRUE/FALSE 반환 |
a>=b | |
a<b | |
a<=b | |
a==b | |
a!=b |
논리 연산자
& | 논리곱 | 왼쪽과 오른 쪽 모두 TRUE 일 경우, TRUE 반환 |
| | 논리합 | 둘중 하나라도 TRUE 일 경우, TRUE 반환 |
! | 논리부정 | TRUE는 FALSE, FALSE는 TRUE로 결과를 반전하여 반환 |
%in% 연산자
멤버연산자라고 부르는 %in% 연산자 이다.
왼쪽에 위치한 값이 오른쪽에 위치한 벡터의 원소에 포함되는지 여부를 확인할 때 유용하게 사용된다.
a <- 0:5
x <- 0
x == a[1]
x == a[2]
x == a[1] | x == a[2] | x ==a[3]
# 간략하게 할 수 있다.
x %in% a
행렬과 배열
1차원 벡터를 행과 열이 있는 2차원 형태로 변환한 자료구조이다.
행렬은 모든 원소의 자료형이 동일해야 한다.
벡터를 행과 열이 있는 행렬로 변경할 수 있다.
배열은 행렬ㅇ을 몇 겹으로 쌓은 다차원 자료구조이다.
숫자1 | 숫자2 | 숫자3 |
---|---|---|
숫자4 | 숫자5 | 숫자6 |
숫자7 | 숫자8 | 숫자9 |
데이터 프레임
행렬과 같은 2차원 자료구조
행렬과 다르게 서로 다른 열 벡터 원소를 가질 수 있다.
이름 | 나이 | 키 | 취미 |
---|---|---|---|
문자 | 숫자 | 숫자 | 문자 |
... |
리스트
벡터, 행렬, 데이터프레임을 모두 원소로 갖을 수 있는 자료구조 이다.
함수(function), 표현식도 원소로 가질 수 있다.
참고
나성호의 R 데이터 분석 입문 도서
https://github.com/HelloDataScience/DAwR
'Programming Language > etc' 카테고리의 다른 글
ISO 8601, 세계협정시(UTC) (0) | 2022.10.06 |
---|---|
[R.입문] R 프로그래밍 (0) | 2021.10.10 |
[R.입문] R 자료구조 - 리스트와 데이터프레임 (0) | 2021.10.06 |
[R.입문] 실습 환경 구축 for windows (0) | 2021.10.05 |