mydistance <- function(x,y){
if (x > y){
temp <- x-y
return(temp)
}
else{
temp <- y-x
return(temp)
}
}
myVectorSum <- function(){
x <- c()
for(i in 1:5){
x[i] <- i
}
return(x)
}
# 짝수 더하기
myEvenSum <- function(x){
y <- 0
for(i in 1:x){
if (i%%2 == 0){
y <- y+ i
}
}
return(y)
}
#빈칸 NA 제외 처리
myNotNaSum <- function(x){
y <- 0
for(i in 1:length(x)){
if (!is.na(x[i])){
y <- y+ x[i]
}
}
return(y)
}
#뉴튼법 대상 추출방법
f <- function (x) exp(x) -2
(result <- uniroot(f, c(0,1)))
#다항식 -2 + 5x -4x^2 + x^3
polyroot(c(-2,5,-4,1))
#미분
f<-expression(a*x^4)
D(f, "x")
#고계미분 결과 a * (4 * (3 * (2 * x)))
DD<- function(expr, name, order =1){
if(order <1 ) stop("'order' must be >= 1")
if(order ==1) D(expr, name)
else DD(D(expr, name), name, order -1)
}
DD(f,"x" ,3)
#수식 이용 미분할때 deriv(~ 수식, 미분할 변수, func=T)
f <- deriv(~ x^2, "x", func=T)
#4 인수에 대한 함수값
#attr(,"gradient")
#x
#[1,] -4 미분한 함수
# 다변함수 미분
g <- deriv(~ x^2*y, c("x","y"), func=TRUE)
g(2,3)
#[1] 12 인수에 대한 함수의 값
#attr(,"gradient") 인수에 대한 미분한 후의 함수의 값
#x y x ㄹ 일계 미분한 결과로 사용해서 계산한 것(12)과
#[1,] 12 4 y로 일계 미분한 결과를 사용해서 계산한것 (4)
h<- deriv(~ x^2*y*z, c("x","y"), function(x,y,z=4){ })
h(3,2)
#적분 integrate()
f <- function(x) x^2 # function 선언
integrate(f, 0 ,1)
#원래 R 준비된 함수 적분시에는 따로 새로 함수 정의 필요 X
integrate(sin, 0 , pi)
#dnorm 정규 분포의 밀도 함수
integrate(dnorm, -Inf, 1.96) # 정규분포 밀도함수를 -Inf(-무한대) ~ 1.96 범위에서 적분하고 있다.
#cubature 패키지 안에있는 함수 adaptIntegrate 사용하면 일차원 과 다차원 수치 적분을 할 수 있다.
install.packages("cubature", dep=T) # cubature pacakge 설치
library(cubature)
f<- function(x) cos(x) #1변 함수일때
adaptIntegrate(f, 0, pi/2) #실행
g<- function(x){ # 2변 함수일때
exp(-(x[1]^2 + x[2]^2) /2) / (2 * pi)
}
adaptIntegrate(g, c(-3,-3), c(3,3)) #인수로 벡터지정 실행
'Data Science > R' 카테고리의 다른 글
시계열분석 (0) | 2015.09.25 |
---|---|
R 도움말 & 함수 확인 (0) | 2015.09.10 |
R공부 Example 3회차 (0) | 2015.09.08 |