1. logical
True/False 값(Boolean values)을 포함하는 logical 클래스에 대해 알아보자.
> logical1 = c(T,F,F)
> logical1
[1] TRUE FALSE FALSE
> class(logical1)
[1] "logical"
2. vector
데이터 타입으로서의 vector 는 수학의 벡터와는 다르게 정의된다.
vector 타입은 일견 기존의 numeric, character, logical 과 중복된 것처럼 보일 수 있지만, vector 타입의 장점은 numeric, character, logical 모두를 포함할 수 있다는 것이다.
> vector1 = vector(mode="logical",3)
> vector1
[1] FALSE FALSE FALSE
특정 타입의 새로운 벡터를 mode="" 과 같은 방식을 통해 만들 수 있다.
그리고 나서 아래와 같이 실제 값으로 변경가능하다.
> vector2=vector(mode="numeric",4)
> vector2
[1] 0 0 0 0
>
> vector2[3] = 5
> vector2
[1] 0 0 5 0
3. matrix
matrix 는 사실상 이차원 vector 이다.
martix 는 vector 가 포함할 수 있는 모든 유형의 데이터 타입을 포함할 수 있지만, 하나의 데이터 타입만 matrix 내에 존재할 수 있다는 제한사항 역시 포함한다.
> matrix1 = matrix(1:9, nrow=3)
>
> matrix2 = matrix(c(T,F,T,T,F,T), ncol=3)
> matrix2
[,1] [,2] [,3]
[1,] TRUE TRUE FALSE
[2,] FALSE TRUE TRUE
> class(matrix2)
[1] "matrix"
>
행렬에서 하나의 행이나 열을 제거하면, 새로운 객체는 행렬의 각각의 콤포넌트가 속해있는 클래스로 돌아간다.
> matrix2[1,]
[1] TRUE TRUE FALSE
> class(matrix2[1,])
[1] "logical"
4. array
한 유형의 데이터 타입만 포함할 수 있지만, 저장할 수 있는 데이터 타입 셋트의 크기가 더 크다.
그리고 array 는 matrices 를 구성요소로 포함할 수 있고, frames 와 lists 라는 두 가지 다른 유형의 데이터 타입도 저장할 수 있다.
array 는 역시 다차원이며, dim=c() 과 같은 식을 이용하여 벡터를 만든다.
> array1 = array(1:16, dim=c(4,2,2))
> array1
, , 1
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
, , 2
[,1] [,2]
[1,] 9 13
[2,] 10 14
[3,] 11 15
[4,] 12 16
>
, , 1 과 , , 2 는 현재의 depth 이다.
위의 4 x 2 x 2 array 에서 첫번째 수는 첫번째 차원의 요소를 나타내며, 두번째 수는 두번째 차원의 요소를 나타낸다.
5. data.frame
data frame 은 아래에서 보는 바와 같이 이름을 지정해줌으로써 행과 열을 자유롭게 구성할 수 있으며, 각각의 열이 서로 다른 데이터 타입을 가질 수 있도록 해준다.
> myvalues1 = c(348, -343, 937, 394, 124)
> myvalues2 = c(T, F, T, T, F)
> names = c("Trial 1", "Trial 2", "Trial 3", "Trial 4", "Trial 5")
> dataframe1=data.frame(myvalues1,myvalues2,row.names =names)
> dataframe1
myvalues1 myvalues2
Trial 1 348 TRUE
Trial 2 -343 FALSE
Trial 3 937 TRUE
Trial 4 394 TRUE
Trial 5 124 FALSE
>
data.frame() 명령어는 열을 지정해주는데, 행의 경우 row.names 변수를 통해 지정한다. 열의 이름을 바꾸고 싶은 경우 names() 함수를 이용한다.
> names(dataframe1)[1]="Velocity"
> dataframe1
Velocity myvalues2
Trial 1 348 TRUE
Trial 2 -343 FALSE
Trial 3 937 TRUE
Trial 4 394 TRUE
Trial 5 124 FALSE
>
6. list
vector 와 유사하지만 list 의 경우 어떤 유형의 데이터 타입도 하나에 담을 수 있다.
> list1 = list("thing1", 1.5, FALSE)
> list1
[[1]]
[1] "thing1"
[[2]]
[1] 1.5
[[3]]
[1] FALSE
각각의 아이템에 대해 섹션을 만든다는 것도 특이점이며, [[]] 를 통해 각각의 섹션에 접근할 수 있다.
> list1[[1]]
[1] "thing1"
>
섹션별로 서로 다른 이름을 부여할 수도 있다.
> list2 = list(category1 = c("thing1", "thing2"), category2 = 1.5, category3 = c(FALSE, TRUE))
> list2
$category1
[1] "thing1" "thing2"
$category2
[1] 1.5
$category3
[1] FALSE TRUE
list2 의 특정 섹션에는 아래와 같이 접근한다.
> list2$category3
[1] FALSE TRUE
다음과 같이 특정 섹션의 값을 변경한다.
> list2$category2 = 5
> list2$category2
[1] 5
>
'프로그래밍 Programming' 카테고리의 다른 글
R 프로그래밍 - Reading in Data (0) | 2014.08.09 |
---|---|
R 프로그래밍 - Data Types (Converting/Using) (2) | 2014.08.02 |
R 프로그래밍 - Data Types (numeric, integer, character) (0) | 2014.08.02 |
R 프로그래밍 - Manipulation (0) | 2014.07.16 |
R 프로그래밍 - Matrices(행렬) (5) | 2014.07.11 |