Home R Programming 6주차
Post
Cancel

R Programming 6주차

월요일

if~else / ifelse

  • if~else / ifelse
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
      x <- 1:5
      y <- -2:2
      if(any(x<0)) print(x)
    
      if (any(y<0)) {
        print(abs(y))
        cat("\n y contains negative values")
      }
    
      x <- 1:5
      if(length(x)==5) {
        if (sum(x)==15) {
          cat("\n Vector x length=",length(x),", sum = ",sum(x))
        }else {
          cat("\n Vector x length !=",length(x))
        }
      }
    
      x = c(10,3,6,9)
      y=c(1,5,4,12)
      ifelse(x>y,x,y)
      score = c(80,75,40,98)
      grade=ifelse(score >= 50,"pass","fail")
      data.frame(score,grade)
    

    그냥 단순한 조건문이다. 자세한 설명은 다른 언어들의 if문과 동일하므로 생략.

    이때 조금 특이한 조건문이 하나가 있다. 바로 ifelse문인데 이 조건문은 논리벡터에 적용이 되는 조건문이다. 함수의 기본입력 형식은 ifelse(condition, true ouput, false output)의 형태이다. 약간 느낌은 삼항연산자와 비슷하게 보면 될 듯하다.

switch

  • switch
    1
    2
    3
    4
    5
    
      x<-c(1,3,2,5,2)
      i <- 2
      switch (i,mean(x),median(x),sd(x),var(x))
      type <- "mean"
      switch(type, mean=mean(x),sd=sd(x),var=var(x))
    

    보통 C++에서 쓰는 switch case문과 유사하다. 좀 다른 점이라면 해당 case에 들어가는 것이 한줄의 코드에 다 들어간다는 점이다. 함수 기본입력 형식은 switch(function index,func1,func2,...)이다.

목요일

for statement

  • for statement
    1
    2
    3
    4
    5
    6
    
      for (i in 1:(nfile-1)) {
        idx = (cut * (i - 1) + 1):(cut * i)
        write.table(dat[idx,], file = paste0(f_pre, i, f_post), sep = '\t')
      }
      idx = (cut * i + 1):n
      write.table(dat[idx,], file = paste0(f_pre,i + 1, f_post), sep = '\t')
    

    일반적인 loop statement이다. 반복문의 형태는 시작값:끝값의 형태로 입력해주면 된다,. 위의 코드는 특정 파일을 10개씩 잘라서 데이터에 저장하는 반복문 코드이다.

while statement

  • for statement
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      ch = c("A/B/C/D/F", "A/AA", "BB/B", "Quit", "CC/C")
      xp = list()
      i = 1
      while (ch[i] != "Quit" & i <= length(ch)) {
        xp[[i]] = unlist(strsplit(ch[i],'/'))
        print(xp[[i]])
        i = i + 1
      }
      table(unlist(xp))
    

    일반적인 while문과 동일하다. 설명은 생략…

This post is licensed under CC BY 4.0 by the author.

R Programming 5주차

R Programming 7주차

Comments powered by Disqus.