R 활용 사용법2
##R 활용 - 사용법(2/2)
작성 2019년 12월 17일 박영훈
1. 조건문과 반복문
if, for, while, repeat, switch문 등이 있다.
if문 예제 > x <- c(1:5) > ifelse(x %% 2 == 0 , “even”,”odd”) [1] “odd” “even” “odd” “even” “odd”
for 예제 > for(i in 1:3){print(i)} [1] 1 [1] 2 [1] 3
while 예제 > while(i <= 10) + { + print(i) + i <- i+1 + } [1] 1 [1] 2 [1] 3 [1] 4 [1] 5 [1] 6 [1] 7 [1] 8 [1] 9 [1] 10
repeat 예제
> repeat {
+ print(i)
+ if(i >=10){
+ break
+ }
+ i<-i+1
+
+ }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
2.연산
+,-,*,/ : 사칙연산 n %% m : n을 m으로 나눈 나머지 n %/% m : n을 m으로 나눈 몫 n^m : n의 m승 exp(n) : e의 n승 log(x, base=exp(1)) : log base(x), base가 없으면 e sin(x),cos(x),tan(x) : 삼각함수
NA처리
NA는 값이 기록되지 않았음을 나타내는 값이다. NA를 처리하지 않기 위해 옵션을 줘야 한다. > sum(c(1,2,3,4,NA)) [1] NA > sum(c(1,2,3,4,NA), na.rm=TRUE) [1] 10
NA처리는 다음과 같다.
fail - 포함되어 있으면 실패
omit - 포함된 행을 제외
exclude - 포함된 행을 제외, naresid, napredict를 사용하는 함수에서는 다시 결과에 추가함
pass - NA상관없이 진행
> x <- data.frame(a=c(1,2,3), b=c(“a”,NA, “c”), c=c(“A”,”B”,NA))
> na.fail(x)
Error in na.fail.default(x) : 객체안에 결측값들이 있습니다
>
> na.omit(x)
a b c
1 1 a A
> na.exclude(x)
a b c
1 1 a A
> na.pass(x)
a b c
1 1 a A
2 2
3.함수정의
함수의 기본정의
> fibo <- function(n){
+ if(n==1 || n==2){
+ return(1)
+
+ }
+ return (fibo(n-1)+fibo(n-2))
+ }
> fibo(7)
[1] 13
가변길이의 함수
…을 통해 가변인자를 사용할 수 있다.
> f <-function(x, y){
+ print(x)
+ print(y)
+
+ }
>
> g<-function(z, …){
+ print(z)
+ f(…)
+ }
> g(1,2,3)
[1] 1
[1] 2
[1] 3
4.값에 의한 전달
R에서는 모든것이 객체이다. 객체는 함수 호출시 일반적으로 값으로 전달된다. 이를 변수에 대한 참조에 의한 방식에 대비해 값에 의한 전달이라고 한다. 즉, 복사하여 전달된다는 의미이다.
> f <- function(df){
+ df$a <- c(1,2,3)
+ return(df)
+
+ }
> df <- data.frame(a=c(4,5,6))
> df
a
1 4
2 5
3 6
> df <- f(df)
> df
a
1 1
2 2
3 3