파이썬에서는 똑같은 걸 해보려면 모듈을 불러야 하는데 얘는 모듈 X까! 걍 해! 같은 느낌...
이 다음편 문자열인데 분량 개짧습니다(스포일러)
난수 만들기
runif(1)
[1] 0.7232427
runif()를 쓰면 0부터 1까지 중 아무 숫자나 하나 출력한다.
runif(4)
[1] 0.8477728 0.4359127 0.4291748 0.4625472
저 괄호 안에 숫자는 범위가 아니고 개수 지정하는거다.
runif(5,min=0,max=100)
[1] 87.75978 48.65714 87.73802 18.87537 75.90590
범위는 이런 식으로 지정한다.
floor(runif(6,min=0,max=7))
[1] 1 4 6 4 4 4
소수점 떼뿌라!!!
floor는 밑에 설명할건데 그거 보면 왜 저게 6이 아니고 7인지 바로 이해가 된다.
sample(1:6,6,replace=TRUE)
[1] 1 1 2 1 1 5
sample(1:6,6,replace=FALSE)
[1] 6 4 3 2 5 1
혹시 Replace가 뭐 하는건지 아시는 분 제보 바람.
오오 인생 그것은 정규분포
에서 나는 저기 어디 한 3시그마쯤 있는거같은데? 아니 곡선 벗어나신 거 같은데요
rnorm(4)
[1] 0.8371672 0.1055429 -0.3464783 -1.2293797
정규분포를 따르는 난수를 만들어준다. 처음에 norm 보자마자 노름? 노름공간? 했음...
선형대수학이 이렇게 위험합니다 여러분. 그동네 벡터는 화살표말고 다른게 또 있다. (화살표 있는건 유클리드 벡터)
rnorm(4,mean=50,sd=10)
[1] 48.48528 48.86100 41.74518 52.02730
평균이 50, 표준편차가 10인 정규분포를 따르는 난수. 평균이 0이고 표준편차가 1이면 표준정규분포다.
> x=rnorm(400,mean=0,sd=1)
> hist(x)
내가 그렇다고 해짜나여!!! (음?)
아 저거 뭐 깔아야되냐고요? ㄴㄴ 걍 했음
시드
> set.seed(1)
> runif(5)
[1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819
시드를 설정해두면 런이프 5는 계속 저거 뜬다. (저장해둔 시드 날아가면 그대로 안녕...)
> oldseed=.Random.seed
> runif(10)
[1] 0.2059746 0.1765568 0.6870228 0.3841037 0.7698414 0.4976992 0.7176185
[8] 0.9919061 0.3800352 0.7774452
# 만든 시드를 저장하거나
> .Random.seed=oldseed
> runif(10)
[1] 0.2059746 0.1765568 0.6870228 0.3841037 0.7698414 0.4976992 0.7176185
[8] 0.9919061 0.3800352 0.7774452
# 저장한 시드를 불러오거나
.Random.seed는 시드를 생성해야 생기는데, 이걸 변수에 저장할 수 있다.
> oldseed=NULL
> runif(10)
[1] 0.93470523 0.21214252 0.65167377 0.12555510 0.26722067 0.38611409
[7] 0.01339033 0.38238796 0.86969085 0.34034900
그리고 그걸 Null로 만들면 새로 난수를 만들 수 있다.
> oldseed=NULL
> if(exists(".Random.seed"))
+ oldseed=.Random.seed
> runif(5)
[1] 0.2059746 0.1765568 0.6870228 0.3841037 0.7698414
# 시드를 공백으로 만들고 새 시드를 지정한 다음 저장한다.
> if(!is.null(oldseed))
+ .Random.seed=oldseed
> runif(5)
[1] 0.2059746 0.1765568 0.6870228 0.3841037 0.7698414
# oldseed, 그러니까 새로 지정한 시드가 저장된 저 변수가 Null이 아니면 저장해 둔 시드를 불러오라는 얘기.
와 이걸 if로 돌리네.
참고로 .Random.seed는 지역변수라고 한다.
소수점
거 살다보면 소수점 정도는 올릴 수 있지...
v
[1] 0.4976992 0.7176185 0.9919061 0.3800352 0.7774452
일단 시범조교 앞으로.
> round(v)
[1] 0 1 1 0 1
Round()
> ceiling(v)
[1] 1 1 1 1 1
Ceiling()
floor(v)
[1] 0 0 0 0 0
Floor()
> trunc(v)
[1] 0 0 0 0 0
Trunc()
순서대로 반올림/올림/버림/0 아래로 버림.
round(v,digits=2)
[1] 0.50 0.72 0.99 0.38 0.78
w
[1] 9347052311 2121425213 6516737661 1255550960 2672206687
round(w,digits=-3)
[1] 9347052000 2121425000 6516738000 1255551000 2672207000
구렛나룻... 아니고 자릿수 남길 거 지정할 수 있다. 구렛나룻? 음수로 남기면 자릿수가 10 100 1000 이런 식으로 올라간다. 엑셀에서 써봤으면 아실 듯.
round(w/5)*5
[1] 9347052310 2121425215 6516737660 1255550960 2672206685
round(w/7)*7
[1] 9347052309 2121425215 6516737661 1255550961 2672206684
round(w/.02)*.02
[1] 9347052311 2121425213 6516737661 1255550960 2672206687
round(v/.02)*.02
[1] 0.50 0.72 1.00 0.38 0.78
> round(x/.05)*.05
[1] 1.95 0.05 1.90 4.35 1.70
반올림할 자릿수를 n의 배수 형식으로 만들 수도 있다.
'Coding > R' 카테고리의 다른 글
R 배워보기-5. 데이터 불러오고 쓰기 (0) | 2022.08.20 |
---|---|
번외편-R로 미적분 하기 (0) | 2022.08.20 |
R 배워보기-4. 공식 (0) | 2022.08.20 |
R 배워보기-3. 문자열 (0) | 2022.08.20 |
R 배워보기-1. Basics (0) | 2022.08.20 |