#1 코딩 변경(ifelse 연습)
x<- c(1,0,0,1,NA)
y <- ifelse(x == 1,1,(ifelse(x == 0,-1,NA)))
y
## [1]  1 -1 -1  1 NA
z <- ifelse(y == 1,1,(ifelse(y == -1,0,NA)))
z
## [1]  1  0  0  1 NA
x
## [1]  1  0  0  1 NA
z
## [1]  1  0  0  1 NA
#2 테일러 급수를 이용한 지수값 근사
e.series <- function(a=1,n=5){
  if(n<0)stop("Fail")
  sum(a^(0:n)/factorial(0:n))
}

e.series(1,5)
## [1] 2.716667
e.series(1,10)
## [1] 2.718282
e.series(3,10)
## [1] 20.07967
e.series(3,0:10)
## Warning in if (n < 0) stop("Fail"): length > 1 이라는 조건이 있고, 첫번째
## 요소만이 사용될 것입니다
## Warning in 0:n: 수치형 표현식(numerical expression)은 11개의 구성요소들을
## 가지고 있기 때문에 오로지 첫번째 것만을 사용합니다.

## Warning in 0:n: 수치형 표현식(numerical expression)은 11개의 구성요소들을
## 가지고 있기 때문에 오로지 첫번째 것만을 사용합니다.
## [1] 1
n <- 0:10


for (n in 0:10)
print(e.series(a=3,n))
## [1] 1
## [1] 4
## [1] 8.5
## [1] 13
## [1] 16.375
## [1] 18.4
## [1] 19.4125
## [1] 19.84643
## [1] 20.00915
## [1] 20.06339
## [1] 20.07967
#3 대학 평점 계산
scr <- read.csv("C:/hw/HW2.csv", fileEncoding = "utf-8")
scr
##   cr gr
## 1  3  A
## 2  3  B
## 3  3  A
## 4  2  C
scr$pt <- with(scr,ifelse(gr=='A',4,
                          ifelse(gr=='B',3,
                                 ifelse(gr=='C',2,
                                        ifelse(gr=='D',1,0)))))
scr
##   cr gr pt
## 1  3  A  4
## 2  3  B  3
## 3  3  A  4
## 4  2  C  2
gpa1 <- function(pt,cr){
  ncrs <- nrow(scr)
  tcr <- sum(scr$cr)
  tpt <- sum(scr$cr*scr$pt)
  gpa <- tpt/tcr
  data.frame(ncrs=ncrs, tcr=tcr, tpt=tpt, gpa=gpa)
}

gpa1(scr$pt, scr$cr)
##   ncrs tcr tpt      gpa
## 1    4  11  37 3.363636
weighted.mean(scr$pt, scr$cr)
## [1] 3.363636
#4 (연속형) 균등분포
#4.1 확률밀도함수
dens.unif <- function(x,a=0,b=1){
  if (b<=a) stop('Fail')
    (1/(b-a))
  }
#4.2 분포함수
prob.unif <- function(x,a=0,b=1){
  if (b<=a) stop('Fail')
    ((x-a)/(b-a))
  }
#4.3 U(-1,1)로 확인
xg <- seq(-1.5, 1.5, 1000)

xg <- seq(-1.5, 1.5, 1000)

xg<-runif(n=1000, min = -1, max = 1)


#5 Monty Hall
montyhall <- function(n=10,chg="Y"){
  tbl <- matrix(nrow=100, ncol=4)
  for (i in 1:100){
    car <- sample(1:3, size=1)
    pick1 <- sample(1:3, size=1)
    if (car == pick1){
      open1 <- sample(setdiff(1:3, pick1), size=1)
      }
    else {
      open1 <- sample(setdiff(1:3, c(car,pick1)), size=1)
      }
    pick2 <- sample(setdiff(1:3, c(open1, pick1)), size=1)
    tbl[i,] <- c(car, pick1, open1, pick2)
    }
sum (tbl[,1]==tbl[,4])
}

yy <- montyhall(n=100, chg="Y")
nn <- montyhall(n=100, chg="N")
rr <- montyhall(n=100, chg="R")