#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")