12.2 필수 클래스 유형

코드를 작성하는 동안 여러 유형의 개체를 정의하고 사용할 수 있지만 R 프로그래밍의 기초가 되는 몇 가지 유형이 있으므로 아래에서 구체적으로 설명한다.

12.2.1 문자 및 숫자

첫 번째 섹션에서 우리는 숫자 개체를 다루었고 문자 개체도 같은 방식으로 작동한다. 실제의 차이점은 문자 개체는 숫자가 아니라 문자를 저장한다는 것이다. 문자 개체는 다음과 같이 작은 따옴표('') 또는 큰 따옴표("")로 묶어야 한다.

b <- "nine"

코드에서 b를 참조하면 “nine” 문자열이 반환된다. 이전에 살펴본 숫자 객체와 달리 b를 2로 곱할 수 없다.이를 시도하면 “non-numeric argument to binary operator(이항 연산자에 대한 숫자가 아닌 인수)”오류가 발생한다.

문자 개체에 대해 산술연산을 할 수는 없지만 stringr 라이브러리를 사용하여 이러한 개체를 조작할 수 있다. 예를 들어 두 개의 문자 개체를 함께 결합하려면 다음과 같이 stringr 라이브러리의 str_glue() 함수를 사용할 수 있다.

library(stringr)
str_glue(b, " times 2")
## nine times 2

이렇게 하면 “9 x 2” 문자열이 반환된다. 라이브러리 키워드는 함수 라이브러리에 대한 액세스를 제공하는 데 사용된다. 위의 첫 번째 코드 줄은 stringr 라이브러리에 액세스해야 함을 의미한다.

12.2.2 벡터

벡터는 동일한 유형의 개체 목록이다. 문자, 숫자 또는 기타 유형의 개체 목록이 있을 수 있다. 1로 시작하는 숫자 값(색인, index)을 사용하여 목록의 개체를 추적한다. 벡터를 만들려면 쉼표로 구분된 값의 목록을 사용하여 목록을 만드는 c()라는 함수를 사용한다. 알파벳의 처음 5 개 문자를 구성하는 문자를 포함하는 벡터를 만드는 방법은 다음과 같다.

alpha <- c("A", "B", "C", "D", "E")

## OR
alpha1 <- LETTERS[1:5]

alpha라는 이름을 입력하여 전체 목록을 콘솔에 간단히 인쇄하거나, 관심있는 벡터의 요소에 해당하는 인덱스가 있는 개체 이름 뒤에 대괄호를 사용하여 개별 요소를 참조할 수 있다.

예를 들어, alpha[1]은 “A”를 인쇄하고, alpha[5]는 “E”를 인쇄한다.

벡터에 곱셈이나 함수와 같은 연산을 적용하면 연산이 벡터의 각 개체에 적용된다. 결과는 새로운 벡터가 된다. 예를 들어 숫자 20, 30, 40, 50, 60의 벡터가 있고 벡터에 4를 곱하면 새로운 벡터 80, 120, 160, 200, 240이 된다.

n <- c(20,30,40,50,60)
n
## [1] 20 30 40 50 60
n * 4
## [1]  80 120 160 200 240

12.2.3 행렬(Matrix)

행렬은 2 차원 (본질적으로 행과 열)을 가진 벡터이다.

벡터와 마찬가지로 행렬의 각 개체는 동일한 유형이어야 한다. 다음과 같이 벡터의 dim(차원) 속성을 설정하여 행렬을 만들 수 있다.

m <- c(1,2,3,4,5,6,7,8,9)
dim(m) <- c(3,3)
m
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

m을 검사하면 행렬이 표시된다.

     [,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

행렬의 개별 셀을 참조하려면 행과 열 인덱스를 제공한다. 예를 들어, 행 2와 열 1에 무엇이 있는지 확인하려면 m[2,1]에 이 작업을 수행하여 값 2를 얻는다.

12.2.4 리스트

앞에서 논의한 벡터는 동일한 요소를 모두 포함해야 하기 때문에 원자 벡터라고 한다. 혼합된 개체를 포함하는 벡터를 단순히 리스트(list)라고한다. 리스트는 관련 개체의 컬렉션을 관리하려는 경우 편리하다.

새 리스트를 만들려면 다음과 같은 목록 기능만 있으면 된다.

l <- list()
l$name <- "Cards"
l$cards <- c("10", "Jack", "Queen", "King", "Ace")
l$bets <- c(1,5,10)

첫 번째 줄은 빈 리스트를 만든 다음 $를 사용하여 개체를 할당할 이름을 만든다. 첫 번째는 리스트를 설명하는 문자 개체이고, 두 번째는 문자로 구성된 벡터이며, 마지막은 숫자 개체로 구성된 벡터이다. 나중에 이러한 값에 액세스하려면 목록 이름 다음에 달러 기호($)와 개체 이름을 사용해야 한다. 예를 들어, 입력 한 카드 리스트를 보려면 l$cards를 입력하고 목록에서 두 번째 카드를 얻으려면 l$cards[2]를 입력한다.

12.2.5 factor

factor는 지정된 값만 포함 할 수 있는 벡터 유형이다. 예를 들어 성별을 나타내는 값 목록이 있을 수 있으며 각 값은 ‘남성,’ ‘여성’ 또는 ’알 수 없음’이어야 한다. 이 구조는 개체 범주에 대한 분석을 수행 할 때 유용하다.

factor() 함수를 사용하고 값 목록을 제공하여 factor를 생성한다.

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

위의 코드는 다음의 정보를 출력한다:

## [1] male female unknown male
## Levels: female male unknown

벡터에서와 같은 값 목록이 있지만 추가적으로 levels에 대한 정보도 있다.

12.2.6 데이터 프레임

데이터 프레임은 길이가 같은 구성 요소를 가져야 하는 특별한 종류의 리스트이다.

실제로 이것은 행과 열로 구성된 2차원 데이터 구조와 같은 일종의 스프레드 시트와 같은 구조를 갖는다. 데이터 프레임 구성 요소를 $ 연산자를 사용하는 리스트 또는 행과 열 인덱스를 사용하는 행렬처럼 처리할 수 있다.

data.frame() 함수를 사용하여 데이터 프레임을 만들 수 있다.

df <- data.frame(numbers = c(1,2,3), letters = c("A", "B", "C"))
df$more <- c("1st", "2nd", "3rd")

data.frame() 함수를 사용하여 데이터 프레임을 생성할 때 데이터 프레임에 동일한 길이의 벡터를 모두 제공할 수 있다. 데이터 프레임이 있으면 위에서 볼 수 있듯이 $ 연산자를 사용하여 추가 열을 만들 수 있다.

종종 함수의 출력으로 데이터 프레임이 생성된다. 데이터 프레임은 필수 R 개체이며 “tibble” 버전 유형의 데이터 프레임은 “필수 R 패키지”장에서 자세히 다룬 바 있다.