[R 기초] 2. 변수와 데이터 타입

2026. 6. 27. 19:00·BI&Programming-Tools/R

변수 할당 연산자

R에서 변수에 값을 할당하는 방법은 세 가지입니다.

x <- 10      # 가장 일반적인 방식
x = 10       # 파이썬처럼 사용 가능하지만 권장하지 않음
10 -> x      # 오른쪽 방향 할당, 거의 쓰지 않음

 

셋 다 동작하지만 R에서는 <-를 표준으로 사용합니다.

=는 함수 인자를 전달할 때 사용하는 기호와 겹쳐서 코드가 길어지면 헷갈릴 수 있습니다.

RStudio에서는 Alt + - (Mac: Option + -) 단축키로 <-를 빠르게 입력할 수 있습니다.

 

=와 <-의 실질적인 차이가 드러나는 경우가 있습니다.

 

# 함수 호출 시 = 는 인자 전달로만 동작
mean(x = c(1, 2, 3))    # x는 전역 환경에 저장되지 않음

# <- 는 전역 환경에 변수를 만들면서 전달
mean(x <- c(1, 2, 3))   # x가 전역 환경에 저장됨

 

일반적으로는 <-로 변수 할당, =는 함수 인자 전달로 구분해서 쓰는 것이 가독성 면에서 낫습니다.


변수명 규칙

my_var <- 1        # 권장 (스네이크 케이스)
my.var <- 1        # 허용 (R에서 .은 변수명에 사용 가능)
myVar <- 1         # 허용 (카멜 케이스)
.hidden <- 1       # 허용 (.으로 시작하면 ls()에서 숨겨짐)

2x <- 1            # 오류: 숫자로 시작 불가
my-var <- 1        # 오류: 하이픈 사용 불가
my var <- 1        # 오류: 공백 사용 불가

 

R은 대소문자를 구분합니다.

Value와 value는 서로 다른 변수입니다.

파이썬과 마찬가지로 스네이크 케이스(my_var)를 권장하는 편이지만, R 코드에서는 점(.)을 구분자로 쓰는 방식(my.var)도 흔하게 볼 수 있습니다.


R 변수의 특징

동적 타이핑

선언 없이 바로 값을 할당하면 타입이 자동으로 결정됩니다.

같은 변수에 다른 타입의 값을 재할당할 수도 있습니다.

x <- 10
x <- "hello"    # 오류 없이 재할당 가능
x <- TRUE

벡터화 (Vectorization)

R의 가장 큰 특징 중 하나입니다. 단일 값도 사실 길이 1짜리 벡터로 취급하며, 벡터에 연산을 하면 각 원소에 자동으로 적용됩니다.

x <- c(1, 2, 3, 4, 5)
x * 2        # [1]  2  4  6  8 10
x + 10       # [1] 11 12 13 14 15
x > 3        # [1] FALSE FALSE FALSE  TRUE  TRUE

반복문 없이 벡터 전체에 연산을 한 번에 적용할 수 있어서 코드가 간결해지고, 내부적으로 최적화되어 있어 속도도 빠릅니다.

값 복사

R은 변수를 다른 변수에 할당하면 값이 복사됩니다.

한쪽을 변경해도 다른 쪽에 영향을 주지 않습니다.

파이썬의 리스트가 참조를 공유하는 것과 다른 동작입니다.

a <- c(1, 2, 3)
b <- a
b[1] <- 99

a    # [1] 1 2 3  → 변경되지 않음
b    # [1] 99 2 3

 


 

기본 데이터 타입

R의 기본 데이터 타입은 다음과 같습니다.

타입 설명 예시
numeric 실수 (double 포함) 3.14, 10
integer 정수 10L
double 배정밀도 부동소수점 3.14
complex 복소수 2+3i
character 문자열 "hello"
logical 논리값 TRUE, FALSE
a <- 3.14          # numeric (double)
b <- 10L           # integer (L을 붙여야 정수로 저장)
c <- 2 + 3i        # complex
d <- "hello"       # character
e <- TRUE          # logical

 

10과 10L의 차이는 저장 방식입니다.

10은 double로 저장되고 10L은 integer로 저장됩니다.

일반적인 분석에서는 크게 신경 쓰지 않아도 되지만, 메모리를 아껴야 하거나 정수임을 명시해야 할 때는 구분합니다.


 

타입 확인

class()

객체의 클래스(상위 수준의 타입)를 반환합니다. 가장 많이 사용하는 타입 확인 함수입니다.

class(3.14)      # "numeric"
class(10L)       # "integer"
class("hello")   # "character"
class(TRUE)      # "logical"
class(2 + 3i)    # "complex"

typeof()

내부 저장 방식(하위 수준의 타입)을 반환합니다. class()와 결과가 다를 수 있습니다.

typeof(3.14)     # "double"
typeof(10L)      # "integer"
typeof(TRUE)     # "logical"

 

class(3.14)는 "numeric"을 반환하지만 typeof(3.14)는 "double"을 반환합니다.

일반적인 용도에서는 class()를 주로 사용합니다.

is.*() 함수

특정 타입인지 확인해서 TRUE/FALSE를 반환합니다.

is.numeric(3.14)      # TRUE
is.integer(10L)       # TRUE
is.character("hi")    # TRUE
is.logical(TRUE)      # TRUE
is.double(3.14)       # TRUE

 

조건 처리나 함수 내 타입 검증에서 자주 사용합니다.


타입 변환

as.*() 함수로 타입을 변환합니다.

as.numeric("3.14")    # 3.14
as.integer(3.7)       # 3 (소수점 이하 버림)
as.character(100)     # "100"
as.logical(0)         # FALSE
as.logical(1)         # TRUE
as.logical("TRUE")    # TRUE

 

변환이 불가능한 경우 NA를 반환하고 경고 메시지가 출력됩니다.

as.numeric("hello")   # NA (경고: NAs introduced by coercion)
as.integer("abc")     # NA

 

타입 변환은 데이터를 불러온 뒤 컬럼 타입이 예상과 다를 때 자주 사용합니다.

예를 들어 CSV에서 숫자 컬럼이 문자로 읽힌 경우 as.numeric()으로 변환하는 식입니다.

'BI&Programming-Tools > R' 카테고리의 다른 글

[R 기초] 6. 데이터 구조 (행렬, 데이터프레임)  (0) 2026.06.28
[R 기초] 5. 데이터 구조 (벡터, 팩터, 리스트)  (0) 2026.06.28
[R 기초] 4. 논리형과 결측값  (0) 2026.06.28
[R 기초] 3. 수와 문자 다루기  (0) 2026.06.27
[R 기초] 1. R 개념과 RStudio 환경  (0) 2026.06.27
'BI&Programming-Tools/R' 카테고리의 다른 글
  • [R 기초] 5. 데이터 구조 (벡터, 팩터, 리스트)
  • [R 기초] 4. 논리형과 결측값
  • [R 기초] 3. 수와 문자 다루기
  • [R 기초] 1. R 개념과 RStudio 환경
데이터로 읽는 생명
데이터로 읽는 생명
is-note 님의 블로그 입니다.
  • 데이터로 읽는 생명
    In Silico Note
    데이터로 읽는 생명
  • 전체
    오늘
    어제
    • 분류 전체보기 (190) N
      • Bio-Knowledge (16)
        • 분자생물학 & 유전학 기초 (0)
        • 전사체학 & 유전자 발현 (0)
        • 구조생물학 & 단백질 (0)
        • 싱글셀 & 다중오믹스 (0)
        • 임상유전학 & 질환 데이터 (0)
      • Programming (4)
        • API (4)
      • BI&Programming-Tools (111)
        • File Formats (14)
        • Linux & Bash Script (38)
        • Python (35)
        • R (11)
        • 통계 (8)
        • Pipeline Manager (0)
        • Etc (5)
      • Bio Data Analysis (28) N
        • 서열분석개론 (6)
        • WGS(Whole Genome Seq) (11)
        • WES(Whole Exome Seq) (2)
        • RNA-Seq (4) N
        • Metagenome (2)
        • Non-human Resequencing (1)
        • 임상유전체 분석 (1)
        • Multi-Omics (1)
      • Bio-Trends & Tech (1)
      • 코딩테스트 연습 (30)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    R
    ngs
    파이썬
    fasta
    분자생물학
    생물정보학
    wgs
    데이터분석
    리눅스
    GATK
    FASTQ
    코딩테스트
    bioinformatics
    파이썬연습
    파일포맷
    유전체분석
    R기초
    파이썬기초
    리눅스기초
    통계
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데이터로 읽는 생명
[R 기초] 2. 변수와 데이터 타입
상단으로

티스토리툴바