데이터 구조 (스칼라, 벡터, 요인, 행렬, 배열, 데이터프레임, 리스트 등)에 대해서는 다음번 포스팅에서 소개하도록 하겠으며, 먼저 벡터를 가지고 R에서 객체를 입력하는 방법과 몇가지 Tip을 소개하고자 합니다.
R 객체 입력 (할당) |
R 에서 객체를 입력(할당)할 때는 (1) '<-', (2) '=' 의 두가지 방법이 있습니다. 저는 처음에 '<-'로 coursera 교육을 받았었는데요, 이후 한글로 된 책에서는 '='로 되어 있더군요.
둘 다 가능합니다만, '='는 일부 오류가 발생하는 경우가 있다고 하니 '<-' 를 추천합니다. 수식을 취해서 변수 변환을 해야 하는 경우 '==' 을 사용하는데요, 이와 혼돈이 될 수 도 있고 하니 '<-' 를 가급적 사용하는 것을 추천합니다.
데이터 유형은 'a.숫자형(numeric)', 'b.문자형(character)', 'c.논리형(logical)' 의 3가지가 있는데요, 각 유형별로 벡터 입력(할당)을 해보도록 하겠습니다.
객체를 '<- c()' 입력하게 되는데요, 이때 'c'는 'concatenate' 의 첫 알파벳으로서 '연결'이라는 뜻이 되겠습니다.
'문자형' 객체 입력 시에는 큰 따옴표("")를 해주어야 합니다.
'논리형' 객체는 'TRUE'는 '1'로, 'FALSE'는 '0'으로 컴퓨터가 인지를 합니다. 나중에 Indexing 이나 벡터 연산을 할 때 이러한 성질을 알고 있으면 개념을 이해하는데 도움이 될 것입니다.
# 숫자형(numeric) 벡터 객체 입력 x <- c(1, 2, 3, 4, 5) # 문자형(character) 벡터 객체 입력 y <- c("Kim", "Lee", "Lee", "Choi", "Park") # 논리형(logical) 벡터 객체 입력 z <- c(TRUE, TRUE, FALSE, FALSE, TRUE) |
RStudio 의 우측 상단의 Environment 탭에서 Values를 보면 아래 처럼 x: numeric 벡터, y: character 벡터, z: logical 벡터가 새로 생겼음을 확인할 수 있습니다.
R Tips |
R 사용 상의 몇가지 Tip을 소개하자면,
(1) '#' 기호는 인식하지 않습니다.
따라서 부가설명을 달기에 유용하게 사용할 수 있습니다. 위의 R 실습 문에도 '#'으로 부가설명을 달아놓았음을 알 수 있습니다. 나중에 외부 데이터 파일 불러오기 함수에 대해서도 소개를 할텐데요, 외부 파일에 데이터셋에 대한 부가 설명을 '#'로 시작해서 달아놓으면 데이터셋을 처음 보는 사용자라도 이해하기에 많은 도움이 되겠지요.
(2) '대문자'와 '소문자'를 구분합니다.
> # 대문자와 소문자 벡터 할당 예시 > x <- c(1, 2, 3, 4, 5) # 소문자 x 벡터 > X <- c(1, 0, 1, 0, 1) # 대문자 X 벡터 > > x [1] 1 2 3 4 5 > X [1] 1 0 1 0 1 # 소문자x 벡터와 대문자 X 벡터의 평균 값이 각 각 다르게 나옴 > mean(x) [1] 3 > mean(X) [1] 0.6 # 대문자로 시작하는 'Mean()'이라는 함수는 찾을 수 없다는 에러메시지가 뜸.
> Mean(x) Error: could not find function "Mean" |
(3) 객체 이름을 숫자나 숫자로 시작하는 이름으로 지정하면 안됨
> # 객체 이름을 숫자로 하면 에러 발생 > 3 <- c(1, 2, 3) Error in 3 <- c(1, 2, 3) : invalid (do_set) left-hand side to assignment > 3x <- c(1, 2, 3) Error: unexpected symbol in "3x" > x3 <- c(1, 2, 3) > x3 [1] 1 2 3 > > 한글 [1] "김씨" "이씨" "이씨" "최씨" "박씨" |
(4) R이 강력한 이유 중의 하나가 벡터 연산이 자유롭다는 것입니다.
벡터끼리의 연산 예 중에서 재미있는 몇 개만 예를 들어보도록 하겠습니다. 벡터 연산이 안된다면 루프 프로그램을 따로 짜야 하는 경우가 생기는데요, R은 벡터 연산이 자유로우므로 프로그램이 한결 간결해질 수 있어서 좋습니다.
> # 벡터를 가지고 새로운 벡터를 만들기, c(6:10)은 c(6,7,8,9,10)과 동일. 연속된 숫자 일괄 입력에 유용 > x <- c(1, 2, 3, 4, 5) > x2 <- c(x, 6:10) > x2 [1] 1 2 3 4 5 6 7 8 9 10 > > > # 논리형 벡터 TRUE 는 '1', FALSE는 '0'으로 인식함. 벡터끼리 연산 가능함 > z <- c(TRUE, TRUE, FALSE, FALSE, TRUE) > x_plus_z <- c(x + z) > x_plus_z [1] 2 3 3 4 6 > > > # 요소 숫자가 x2는 10개, z는 5개로 서로 다름. > # 이럴 경우 개수가 작은 벡터의 요소가 순서대로 순환하면서 연산을 하게 됨. > x2_plus_z <- c(x2 + z) > x2_plus_z [1] 2 3 3 4 6 7 8 8 9 11 > > > # 입력 요소의 유형이 서로 다를 경우 문자형으로 강제 변환되어 입력됨 > x3 <- c(1, "Kim", TRUE) # 숫자형, 문자형, 논리형으로 입력했다고 생각하지만... > x3 [1] "1" "Kim" "TRUE" # 결과적으로 큰 따옴표가 붙어서 모두 문자형으로 입력되었음 |
맛뵈기로 벡터에 대해서 몇가지 Tip을 소개했는데요, 다음번 포스팅에서는 데이터 구조 (스칼라, 벡터, 요인, 행렬, 배열, 데이터프레임, 리스트 등)에 대해서 소개하도록 하지요.
이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡' 단추를 꾸욱 눌러주세요.^^
'R 분석과 프로그래밍 > R 데이터 전처리' 카테고리의 다른 글
R Indexing (인덱싱), R 데이터 선택 (23) | 2015.07.09 |
---|---|
R 데이터 구조 (Data Structure in R) : scala, vector, factor, matrix, array, dataframe, list (19) | 2015.07.09 |
R 작업공간 설정 및 저장 (4) | 2015.07.06 |
[R] RStudio 에서 한글이 깨질 때 (14) | 2015.07.04 |
RStudio 화면 구성 및 주요 단축 키 (6) | 2015.07.04 |