본문 바로가기
기본적인프로그래밍/R

[R] bool로 받기 (na인지 아닌지, 대소문자인지 아닌지 확인)

by 인포메틱스 2021. 10. 19.
반응형

 

for문을 돌리다 보면 if문을 써야 할 때가 있고 다양하게 조건을 걸어야하는 경우가 생깁니다.

 

조건을 숫자로 이용할때도 있고, 혹은 NA인지, Null인지 아닌지를 확인하는 경우도 생깁니다.

 

그러는 경우는 is.(조건)만으로 대부분 확인이 가능합니다.

 

is.array(x)
is.numeric(x)
is.character(x)
is.factor(x)
is.finite(x)
is.interger(x)
is.list(x)
is.matrix(x)
is.null(x)
is.na(x)

etc... is.상태 를 이용하면 bool로 받을 수가 있다.

 

최근에 UCSC에서 유전자 sequence 를 얻어서 분석하게 되었는데, 여기서 필요한 것이 대문자이냐? 소문자이냐? 라는 것을 알아야 했습니다. (UCSC에서는 Exon영역을 대문자 나머지를 소문자로 만듬)

 

그래서 위와 같이 is.loweris.upper가 있는지 확인해보니 없었습니다. 그래서 또 찾아보다가 간단하게 찾아낸 것이 다음과 같습니다.

 

library(stringr)
s='T'
# s가 대문자이냐?
str_detect(s, "^[:upper:]+$")
# s가 소문자이냐?
str_detect(s, "^[:lower:]+$")

 

s에 대문자 소문자가 섞여있을 경우 무조건 False를 반환합니다.

 

^[:upper:]+$ 가 뭐냐!? 저도 잘 모릅니다. 정규표현식인 것 같은데 찾을 수가 없네요..

 

[:upper:], [:lower:]의 경우 shell에서 대문자 소문자로 변경하는 거라고 하는데, ^이거는 match시키는거고, $의 경우 input 전체를 보는것 같구요. (정규표현식 공부해야합니다....)

 

위 같은 방법이 외우기 힘들다! 다음과 같은 방법도 있습니다.

 

x='t'
# 대문자냐!
x==toupper(x)
# 소문자냐!
x==tolower(x)

 

 toupper(), tolower()의 경우 변수들을 대문자로, 혹은 소문자로 변경시켜주는 기능입니다. 그리고 변수를 대문자화 시켜서 같냐?, 소문자를 시켜서 같냐? 보는거죠.

 

 

728x90
반응형

댓글