3. 문자열 (data type, true, false)

CHOI·2021년 6월 11일
0

R

목록 보기
3/10
post-thumbnail

1. str

x = c(1,2,3,4,6)
y = c("1","2","3","4","5")
str(x)  #  num [1:5] 1 2 3 4 6
str(y)  #  chr [1:5] "1" "2" "3" "4" "5"

앞서서 변수들을 가지고 연산을 하려면 length 의 길이가 같아야 한다고 했다. 그렇다면 위의 경우에 x * y 를 하면 어떻게 될까?

x * y에서 다음과 같은 에러가 발생했습니다:이항연산자에 수치가 아닌 인수입니다

라고 오류가 발생한다. 이유는 위 코드에서 str 함수를 사용하면 알 수 있다.

이 함수는 structure(구조) 를 보여주는 함수이다. 위의 결과에서 알 수 있듯이 변수 'x'는 num 즉 숫자이고 변수 'y'는 chr 즉 문자열이다.

기본적으로 문자와 숫자의 곱은 불가능하다는 것을 알 수 있을 것이다. 그리고 여기서 또 알 수 있는 것이 R언어에서는 문자를 chr 로 나타낸다 파이썬에서 str 즉 'string' 으로 나타낸것과 다르다는 것을 알 수 있다.

파이썬에서 str 과 R에서 str 는 다르기 때문에 혼동하지 않도록 주의하자.

2. Boolen

1 + 2 = 3  #  1 + 2 = 3에서 다음과 같은 에러가 발생했습니다:대입의 대상이 비언어적 객체로 확장됩니다

만약 위처럼 값을 입력하면 오류가 발생하는 것을 볼 수 있다. 우리는 단지 1 + 2 가 3인지 확인하려고 했는데 오류가 발생한 것이다. 그렇다면 어떻게 해야할까? 답은 간단하다.

1 + 2 == 3  #  [1] TRUE

= 대신 == 를 쓰면 된다. 아마 다른 언어를 공부한 사람이라면 이 둘의 차이를 알 수 있을 것이다. =를 하나만 사용하면 변수에 대입한다는 의미이고 ==를 쓰면 둘이 같다라는 의미로 해석하면 된다.

그렇기 때문에 1 + 2 = 3 을 하면 3을 1 + 2 에 대입한다는 의미인데 숫자에 숫자를 대입하는 것 부터 말이 안되기 때문에 오류가 발생하는 것이다.

2-1. 문자 == 숫자

그렇다면 여기서 드는 의문은 1 == "1"을 하면 어떻게 나올까?

1 == "1"  #  [1] TRUE

문자와 숫자가 같다고 하기 때문에 False 가 나올것 같지만 TRUE 가 나온다.

기본적으로 R 에서는 char "1" 과 num 1 은 같다고 인식한다.

profile
벨로그보단 티스토리를 사용합니다! https://flight-developer-stroy.tistory.com/

0개의 댓글