#4제어문,연산,함수
#IF, FOR, WHILE
if (TRUE){
print('TRUE')
print('hello')
} else {
print('FALSE')
print('world')
}
## [1] "TRUE"
## [1] "hello"
for (i in 1:10){
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
i <- 0
while(i<10){
print(i)
i<- i+1
}
## [1] 0
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
#행렬 연산
x<-matrix(c(1,2,3,4),nrow=2,byrow=TRUE)
x
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
x+x
## [,1] [,2]
## [1,] 2 4
## [2,] 6 8
x%*%x
## [,1] [,2]
## [1,] 7 10
## [2,] 15 22
t(x)
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
solve(x)
## [,1] [,2]
## [1,] -2.0 1.0
## [2,] 1.5 -0.5
#NA의 처리
NA & TRUE
## [1] NA
NA+1
## [1] NA
sum(c(1,2,3,NA))
## [1] NA
sum(c(1,2,3,NA),na.rm=TRUE)
## [1] 6
x<-data.frame(a=c(1,2,3),b=c("a",NA,"c"),c=c("a","b",NA))
x
## a b c
## 1 1 a a
## 2 2 <NA> b
## 3 3 c <NA>
na.omit(x)
## a b c
## 1 1 a a
na.pass(x)
## a b c
## 1 1 a a
## 2 2 <NA> b
## 3 3 c <NA>
#na.fail(x)
#함수의 정의
fibo <- function(n){
if (n==1 || n==2){
return(1)
}
return(fibo(n-1)+fibo(n-2))
}
fibo(1)
## [1] 1
fibo(5)
## [1] 5
fibo <- function(n){
if (n==1 || n==2){
return(1)
}else{
fibo(n-1)+fibo(n-2)
}
}
f <- function(x,y){
print(x)
print(y)
}
f(1,2)
## [1] 1
## [1] 2
f(y=1,x=2)
## [1] 2
## [1] 1
f <- function(x,y){
print(x)
print(y)
}
g <- function(z,...){
print(z)
f(...)
}
g(1,2,3)
## [1] 1
## [1] 2
## [1] 3
f <- function(x,y){
print(x)
g <- function(y){
print(y)
}
g(y)
}
f(1,2)
## [1] 1
## [1] 2
#스코프(Scope)
n <- 1
f <- function(){
print(n)
}
f()
## [1] 1
n <- 2
f()
## [1] 2
n <- 100
f <- function(){
n <- 1
print(n)
}
f()
## [1] 1
rm(list=ls())
f <- function(){
print(x)
}
#f()
rm(list=ls())
f <- function(){
x <- 1
}
f()
#x
n <- 100
f <- function(n){
print(n)
}
f(1)
## [1] 1
f <- function(x){
a <- 2
g <- function(y){
print(y+a)
}
g(x)
}
f(1)
## [1] 3
a <- 100
f <- function(x){
g <- function(y){
print(y+a)
}
g(x)
}
f(1)
## [1] 101
f <- function(){
a <- 1
g <- function(){
a <-2
print(a)
}
g()
print(a)
}
f()
## [1] 2
## [1] 1
b <- 0
f <- function(){
a <- 1
g <- function(){
a <<- 2
b <<- 2
print(a)
print(b)
}
g()
print(a)
print(b)
}
f()
## [1] 2
## [1] 2
## [1] 2
## [1] 2
#벡터 연산
x <- c(1,2,3,4,5)
x + 1
## [1] 2 3 4 5 6
x <- c(1,2,3,4,5)
x + x
## [1] 2 4 6 8 10
x == x
## [1] TRUE TRUE TRUE TRUE TRUE
x == c(1,2,3,5,5)
## [1] TRUE TRUE TRUE FALSE TRUE
c(T,T,T) == c(T,F,T)
## [1] TRUE FALSE TRUE
x <- c(1,2,3,4,5)
sum(x)
## [1] 15
mean(x)
## [1] 3
median(x)
## [1] 3
x <- c(1,2,3,4,5)
ifelse(x%%2 ==0, "even","odd")
## [1] "odd" "even" "odd" "even" "odd"
(d <- data.frame(x=c(1,2,3,4,5), y=c("a","b","c","d","e")))
## x y
## 1 1 a
## 2 2 b
## 3 3 c
## 4 4 d
## 5 5 e
d[c(TRUE,FALSE,TRUE,FALSE,TRUE),]
## x y
## 1 1 a
## 3 3 c
## 5 5 e
d[d$x %% 2==0,]
## x y
## 2 2 b
## 4 4 d
#객체의 불변성
v <- 1:1000
for (i in 1:1000){
v[i] <- v[i] +1
}
v <- 1:1000
v <- v+1
#객체의 삭제
x <- c(1,2,3,4,5)
ls()
## [1] "a" "b" "d" "f" "i" "n" "v" "x"
rm("x")
ls()
## [1] "a" "b" "d" "f" "i" "n" "v"
rm(list=ls())