[14-01-20]

1. 변수

2. 스칼라

2.1 숫자

a <- 3
b <- 4.5
c <- a + b
print(c)
## [1] 7.5

2.2 NA

one <- 100
two <- 75
three <- 80
four <- NA

변수에 값이 존재하지 않는지 확인해보자.

is.na(four)
## [1] TRUE

2.3 NULL

x <- NULL
is.null(x)
## [1] TRUE
is.null(1)
## [1] FALSE
is.na(x)
## Warning: is.na()는 유형이 'NULL'인 (리스트 또는 벡터)가 아닌 것에
## 적용되었습니다
## logical(0)

2.4 문자열

a <- "hello"
print(a)
## [1] "hello"

2.5 진리값

TRUE & TRUE
## [1] TRUE
TRUE | FALSE
## [1] TRUE
!FALSE
## [1] TRUE
T <- FALSE
TRUE <- FALSE
## Error: 대입에 유효하지 않은 (do_set) 좌변입니다
c(TRUE, TRUE) & c(TRUE, FALSE)
## [1]  TRUE FALSE
c(TRUE, TRUE) && c(TRUE, FALSE)
## [1] TRUE

&은 각 원소간 계산을 한다.
&&은 벡터의 요소간 계산을 위함이 아니라 한개의 boolean 값끼리의 연산을 하기 위한 연산자이다.

2.6 요인(Factor)

sex <- factor("m", c("m", "f"))
sex
## [1] m
## Levels: m f
nlevels(sex)
## [1] 2
levels(sex)
## [1] "m" "f"

level의 값을 직접 수정해보자

levels(sex) <- c("male", "female")
sex
## [1] male
## Levels: male female

명목형 변수의 level을 순서형 변수로 만들수 있다.

ordered(c("a", "b", "c"))
## [1] a b c
## Levels: a < b < c
factor(c("a", "b", "c"), ordered = TRUE)
## [1] a b c
## Levels: a < b < c

3. 벡터(Vector)

3.1 벡터의 정의

나열하는 인자들은 한가지 유형의 스칼라 타입이어야 한다.
다른 타입의 데이터를 섞어서 저장하면 한가지 타입으로 자동변환된다.

x <- c(1, 2, 3, 4, 5)
x
## [1] 1 2 3 4 5
y <- c("1", 2, "3")
y
## [1] "1" "2" "3"

벡터는 중첩될 수 없다.벡터안에 벡터를 정의하면 단일차원의 벡터로 변경된다.
중첩된 구조는 리스트를 사용해야 한다.

c(1, 2, 3, c(1, 2, 3))
## [1] 1 2 3 1 2 3

숫자형 데이터의 경우, 여러 방법으로 벡터를 만들 수 있다.

x <- 1:10
x
##  [1]  1  2  3  4  5  6  7  8  9 10
x <- seq(1, 10, 2)
x
## [1] 1 3 5 7 9

seq_along은 인자로 주어진 데이터의 “길이"만큼 1,2,…,N으로 구성된 벡터를 반환한다.

seq_along(c("a", "b", "c"))
## [1] 1 2 3
seq_along(3)
## [1] 1
seq_len(3)
## [1] 1 2 3

벡터의 각 셀에는 names()를 사용해 이름을 부여할 수 있다.

x <- c(1, 3, 4)
names(x) <- c("kim", "seo", "park")
x
##  kim  seo park 
##    1    3    4

3.2 벡터내 데이터 접근

x <- c("a", "b", "c")
x[1]
## [1] "a"

음수의 인덱스를 사용하면 특정 요소만 제외할 수 있따.

x[-1]
## [1] "b" "c"

벡터의 여러 위치에 저장된 값을 가져오려면 벡터의 형식을 사용한다.

x[c(1, 2)]
## [1] "a" "b"
x[1:2]
## [1] "a" "b"

이름을 사용해서 접근 할 수도 있다.

x <- c(1, 3, 4)
names(x) <- c("kim", "seo", "park")
x["seo"]
## seo 
##   3
x[c("kim", "seo")]
## kim seo 
##   1   3

벡터의 길이는 length()또는 NROW()를 통해 알 수 있다.
nrow()는 행렬에서 사용하며, NROW()는 인자가 벡터인 경우 벡터를 n행 1열의 행렬로 취급한다.

length(x)
## [1] 3
nrow(x)
## NULL
NROW(x)
## [1] 3