TRUE
, FALSE
, T
, F
, 1
, 0
3 + 2i
"abc"
기본연산자
^
, **
:
1:10
연산은 1부터 10까지를 생성한다.+
, -
, *
, /
<
, >
, <=
, =>
, ==
<-
, =
, ->
;
데이터 유형 확인
mode(10+1) == "numeric"
mode(mode(10+1)) == "character"
수학 함수
abs(x)
round(x, digits=y)
sqrt(x)
log(x)
, log10(x)
, log2(x)
pi
데이터 객체 별 구조 및 특징
R의 데이터 저장 방식은 아래와 같다.
| 데이터 객체 | 차원 | 복수 데이터 유형 |
| :———-: | :—–: | :—–: |
| vector | 1차원 | 불가 |
| matrix | 2차원 | 불가 |
| list | 2차원 이상 | 가능 |
| data frame | 2차원 | 가능 |
데이터 객체 명명 규칙
.
, _
, 한글 가능_
사용불가값 항당 방법
아래는 모두 같은 결과를 나타낸다.
x = log(2)
x <- log(2)
log(2) -> x
객체 관리
ls()
, objects()
함수를 통해서 현재 생성되어있는 객체를 확인 할 수 있다.
객체 삭제
rm()
함수를 통해서 객체를 삭제할 수 있다.
rm(a) # a 삭제
rm(list = ls()) # 전체 객체 삭제
하나 이상의 data값으로 구성된 1차원 자료구조.
한 가지 유형의 데이터만 입력가능하다.
백터 할당 방법
:
연산자c()
seq()
req()
paste()
:
연산자 이용
> vector_1 = -3:3; vector_1
[1] -3 2 1 0 1 2 3
c()
- combine 함수
인자로 넘겨주는 원소들을 묶어서 벡터로 생성한다. 다음의 특징이 있다.
> c(5, 6, 7)
[1] 5, 6, 7
> c(5.1, 6, 7)
[1] 5.1, 6.0, 7.0
> x = c(aa=1, b=2, c=3); x
aa b c
1 2 3
> x['aa']
[1] 1
seq()
사용
> seq(4)
[1] 1 2 3 4
> seq(1, 4)
[1] 1 2 3 4
> seq(1, 4, by=0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0
> seq(from=1, to=4, by=0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0
> seq(1, 4, length=8)
[1] 1.000000 1.428571 1.857143 2.285714 2.714286 3.142857 3.571429
[8] 4.000000
rep()
사용
> rep(2)
[1] 2
> rep(2, 3)
[1] 2 2 2
> rep(c(1, 2), 2)
[1] 1 2 1 2
> rep(c(1, 2), times=2)
[1] 1 2 1 2
> rep(c(1, 2), each=2)
[1] 1 1 2 2
paste()
사용
> paste("A", 1:5)
[1] "A 1" "A 2" "A 3" "A 4" "A 5"
> paste("A", 1:5, sep="")
[1] "A1" "A2" "A3" "A4" "A5"
> paste("A", 1:5, 5:1, sep=",")
[1] "A,1,5" "A,2,4" "A,3,3" "A,4,2" "A,5,1"
names()
를 통한 원소의 이름 정의
> x = 1:4
> names(x) = c('a', 'b', 'c', 'd')
> names(x)
[1] "a" "b" "c" "d"
> x
a b c d
1 2 3 4
원소 접근
matrix는 동일한 자료형으로 이루어진 2차원 자료구조.
matrix를 정의하는 속성은 다음과 같다.
> mat1 = rbind(1:5, 6:10); mat1
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
> mode(mat1)
[1] "numeric"
> length(mat1)
[1] 10
> dim(mat1)
[1] 2 5
> dimnames(mat1)
NULL
Vector를 이용한 Matrix 생성
rbind()
와 cbind
를 사용가능.
> r1 = 1:5; r2 = 6:10
> mat1 = rbind(r1, r2); mat1
[,1] [,2] [,3] [,4] [,5]
r1 1 2 3 4 5
r2 6 7 8 9 10
> c1 = 1:5; c2 = 6: 10
> mat1 = cbind(c1, c2); mat1
c1 c2
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
matrix()
함수를 이용한 생성
nrow
, ncol
byrow
TRUE
로 지정시 행방향으로 채움
> mat1 = matrix(1:6); mat1
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
> mat1 = matrix(1:6, nrow=2); mat1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> mat1 = matrix(1:6, ncol=2); mat1
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> mat1 = matrix(1:6, byrow=T, ncol=2); mat1
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
dim()
함수를 이용한 차원변경
> mat1
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
> dim(mat1) = c(2, 3); mat1
[,1] [,2] [,3]
[1,] 1 5 4
[2,] 3 2 6
dimnames()
사용해 이름정의
> dimnames(mat1)
NULL
> dimnames(mat1) = list(c('r1', 'r2'), c('c1', 'c2', 'c3'))
> mat1
c1 c2 c3
r1 1 5 4
r2 3 2 6
data.frame()
함수를 통한 생성
> num = 1:3
> value = c(10, 5, 20)
> data1 = data.frame(num, value)
> data1
num value
1 1 10
2 2 5
3 3 20
data frame 변수 접근
> data1
num value
1 1 10
2 2 5
3 3 20
> data1$num
[1] 1 2 3
> data1[c('num', 'value')]
num value
1 1 10
2 2 5
3 3 20
> data1[1,]
num value
1 1 10