쿡북 분량은 일단 짧다.
다음것도 짧다.
grep()
v=c("피카츄","피츄","라이츄","에몽가","따라큐")
w=c("Alticuno","moltres","zapdos","lugia","Ho-oh")
참고로 오늘의 시범조교다.
grep("따라큐",v)
[1] 5
grep은 문자를 찾아주는 함수.
grep("alticuno",w)
integer(0)
...인데 대소문자를 가린다.
grep("alticuno",w,ignore.case=TRUE)
[1] 1
그래서 ignore.case=TRUE를 줘야 대소문자 상관 없이 찾아준다.
^와 $
각각 문자의 시작과 끝을 지정해서 찾아주는 것.
grep("^피",v)
[1] 1 2
# 시작 문자 지정하기
grep("츄$",v)
[1] 1 2 3
# 끝 문자 지정하기
시작 문자는 ^(문자), 끝 문자는 (문자)$로 지정하면 된다.
글자수 지정하기
grep("..a",w)
[1] 4
grep("..츄",v)
[1] 1 3
각각 a와 츄로 끝나는 세글자 이상인 것을 찾으라는 얘기. R은 결과가 벡터 주소로 나온다.
grepl()
grepl("..츄",v)
[1] TRUE FALSE TRUE FALSE FALSE
결과를 찾아주긴 하는데 T, F로 반환한다.
gsub()
> text="힘세고 강한 아침"
> gsub("아침","오후",text)
[1] "힘세고 강한 오후"
엑셀의 찾아바꾸기 같은 기능. sub()은 처음에 나오는 것 하나만, gsub()은 전부 바꿔준다.
paste()
> a="Thunder"
> b="bolt"
> paste(a,b)
[1] "Thunder bolt"
기본적으로는 이렇게 쓴다.
paste(v,w)
[1] "피카츄 Alticuno" "피츄 moltres" "라이츄 zapdos" "에몽가 lugia"
[5] "따라큐 Ho-oh"
벡터도 되긴 된다. (각 벡터의 1번끼리 붙이고 2번끼리 붙이고 이런 식)
paste(a,b,sep="")
[1] "Thunderbolt"
paste(a,b,sep=";")
[1] "Thunder;bolt"
sep=""으로 구분자 옵션도 줄 수 있다.
paste(v,collapse=",")
[1] "피카츄,피츄,라이츄,에몽가,따라큐"
벡터의 원소들은 이런 식으로 collapse를 사용해야 하고
paste(v,w,sep=";",collapse=", ")
[1] "피카츄;Alticuno, 피츄;moltres, 라이츄;zapdos, 에몽가;lugia, 따라큐;Ho-oh"
두 개 이상의 벡터를 붙일 때 sep=""을 쓰면 안에 있는 원소들을 저걸로 구별해준다.
paste0()
paste0(a,b)
[1] "Thunderbolt"
paste()에서 sep=""인 것과 동일.
sprintf()
파이썬의 format같은 것.
sprintf("%s",text)
[1] "힘세고 강한 아침"
sprintf("%s은 귀엽다",v)
[1] "피카츄은 귀엽다" "피츄은 귀엽다" "라이츄은 귀엽다" "에몽가은 귀엽다"
[5] "따라큐은 귀엽다"
따옴표가 없으면 에러난다.
sprintf("%d,",a)
[1] "1," "2," "3," "4," "5,"
> sprintf("%4d,",a)
[1] " 1," " 2," " 3," " 4," " 5,"
# 여기 공백 4개 추가요
> sprintf("%04d,",a)
[1] "0001," "0002," "0003," "0004," "0005,"
# 공백은 너무 여백의 미니까 0을 붙이죠
앞에 옵션을 줄 수도 있다. (%d는 int)
> sprintf("%f",pi)
[1] "3.141593"
# 이것은 원주율이다.
> sprintf("%.3f",pi)
[1] "3.142"
# 소수점 아래 세자리만 뽑자.
> sprintf("%1.0f",pi)
[1] "3"
# 아 소수점 필요없어!!!
> sprintf("%2.0f",pi)
[1] " 3"
# 앞에 공백이 생겼다.
> sprintf("%-2.0f",pi)
[1] "3 "
# 뒤에 공백이 생겼다.
> sprintf("%+2.0f",pi)
[1] "+3"
# 앞에 +가 붙었다.
> sprintf("%+20f",pi)
[1] " +3.141593"
> sprintf("%-20f",pi)
[1] "3.141593 "
# +는 앞에 붙는데 -는 또 뒤에 가서 붙는다. 뭘까.
%f는 float.
> sprintf("%e",sqrt(2))
[1] "1.414214e+00"
> sprintf("%E",sqrt(2))
[1] "1.414214E+00"
%e, %E는 지수형상수.
> sprintf("%g",sqrt(2))
[1] "1.41421"
> sprintf("%g",1e6 * sqrt(2))
[1] "1.41421e+06"
> sprintf("%.g",1e6 * sqrt(2))
[1] "1e+06"
> sprintf("%.G",1e-6 * sqrt(2))
[1] "1E-06"
넌 뭐냐?
+%는 %%로 출력한다.
'Coding > R' 카테고리의 다른 글
R 배워보기-5. 데이터 불러오고 쓰기 (0) | 2022.08.20 |
---|---|
번외편-R로 미적분 하기 (0) | 2022.08.20 |
R 배워보기-4. 공식 (0) | 2022.08.20 |
R 배워보기-2. Numbers (0) | 2022.08.20 |
R 배워보기-1. Basics (0) | 2022.08.20 |