lab01

    #조건문 확인 
    
    jobtype <- "B"
    jobtype
    
    # if문은 ()값이 참일때 블럭 실행함.
    # else구문, else if구문은 반드시 if 구문의 }의 같은 라인에 적어줘야함.
    if(jobtype == 'A'){
      bonus <- 200
    }else {
      bonus <- 100
    }
    
    print(bonus)
    rm(jobtype)
    rm(bonus)
    
    # 점수를 가지고 학점을 주기 
    score <- 60;
    # if-else if-else 구문 
    # else구문 옆에는 조건식이 오면 안된다는 것 기억.
    if(score > 90){
      grade <- 'A'
    }else if(score > 80){
      grade <- 'B'  
    }else if(score > 70){
      grade <- 'C'
    }else if(score > 60){
      grade <- 'D'
    }else{
      grade <- 'F'
    }
    
    print(grade)
    
    # 조건문에 논리연산자(&,|) 사용해보기.
    a = 10
    b = 20
    # & 둘다 참이면 참을 리턴함.
    if(a>5 & b>5){
      print(a+b)
    }
    # | 하나라도 참이면 참을 리턴함.
    if(a>5 | b>30){
      print(a*b)
    }
    
    if(a>b){
      c <- a
    }else{
      c <- b
    }
    print(c)
    
    #첫번째 매개변수(수식)가 참이면 a를 리턴, 거짓이면 b를 리턴
    c <- ifelse(a>b,a,b)
    c
    
    
    
    

     

    lab02

    # 반복문에 대해 알아보자.
    # for문
    
    # for(변수 in 범위)
    for (i in 1:5) {
      print("*")
    }
    
    for(i in 1:10){
      print(i)
    }
    
    # cat() : 문장을 만들어서 출력하고자 할때 사용하는 함수.
    #\n은 개행하라(이스케이프문자)
    
    for (i in 1:9) {
      cat(" 2 *",1 , "=", 2*i, "\n")
    }
    
    c <- 20 
    cat("c의 값은",c,"\n")
    
    for (i in 1:20) {
      if((i %% 2) == 0){
        cat("1~20까지의 짝수 : ",i,"\n")
      }
    }
    
    for (i in 1:20) {
      if((i %% 2) != 0){
        cat("1~20까지의 홀수 : ",i,"\n")
      }
    }
    
    #값 누적하기
    sum <- 0
    for (i in 1:1000) {
      sum <- sum + i
    }
    cat("1에서 100 누적값 :",sum)
    
    iris
    head(iris,6)
    
    #num은 150이 저장
    num <- nrow(iris)
    
    mylabel <- c()
    mylabel
    
    for (i in 1:num) {
      # 꽃잎의 길이에 따라 레이블 결정
      if(iris$Petal.Length[i] <= 1.6){
        mylabel[i] <- 'L'
      }else if(iris$Petal.Length[i] <= 5.1){
        mylabel[i] <- 'H'
      }else{
        mylabel[i] <- "M"
      }
    }
    mylabel
    
    #새로운 데이터프레임을 만들자
    df_new_iris <-data.frame(iris$Petal.Length,mylabel)
    df_new_iris
    class(df_new_iris)
    head(df_new_iris)
    
    # while문 (통상 무한루프를 실행할때 많이 사용함)
    sum <- 0;
    i <- 1;
    while(i<=100){
      sum <- sum + i #값 누적하기기
      i <- i + 1 #이라인이 주석처리되면 무한루프에 빠진다.
    }
    print(sum)
    
    # next문은 자신의 뒷문장은 실행하지 않고 반복문의 블럭끝으로 바로 이동함
    # 1~10 사이의 홀수만 더한 결과
    sum <- 0
    for (i in 1:10) {
      if(i%%2 == 0){
        next
      }
      sum <- sum + i
    }
    print(sum)
    
    # 1~10 사이의 짝수만 더한 결과
    sum <- 0
    for (i in 1:10) {
      if(i%%2 != 0){
        next
      }
      sum <- sum + i
    }
    print(sum)
    
    
    
    
    
    
    

     

    lab03

    # apply() -- 행과열이 있는 2차원 데이터인 메트릭스나 데이터 프레임에 이용함. 반복문에 비해서 속도도 빠르고 사용하기 편리하게 자주 이용함
    
    iris
    dim(iris)
    
    # 1 <-----row(행)방향으로 함수를 적용함함.
    apply(iris[,1:4],1,sum)
    apply(iris[,1:4],1,mean)
    
    # 2 <-----col(열)방향으로 함수를 적용함.
    apply(iris[,1:4],2,sum)
    apply(iris[,1:4],2,mean)
    
    # 사용자 정의함수에 대해서 알아보기
    
    # mymax 함수는 두개의 매개별수를 받아서 큰값을 리턴하는 함수
    mymax <- function(x,y){
      if(x>y){
        max <- x
      }else{
        max <- y
      }
      return(max)
    }
    mymax(10,5)
    a <- mymax(50,20)
    b <- mymax(50,200)
    print(a+b)
    
    # 함수를 정의함에 있어 매개변수 일부의 값으로 초기값을 설정해 봄
    mydiv <- function(x,y=2){
      result <- x/y
      return(result)
    }
    mydiv(10,3)
    #매개변수가 1개 들어가므로 y값은 기본값을 이용
    mydiv(10)
    mydiv(100)
    
    # 함수는 원래 하나의 기능을 하게끔 구현하는게 원칙
    # R에서는 리턴값을 백터나 리스트형태로 해서 여러개 값을 넘길수 있음.
    myfunc <- function(x,y){
      vsum <- x+y
      vmul <- x*y
      return(list(sum=vsum, mul=vmul))
    }
    
    result <- myfunc(5,8)
    class(result)
    result$sum
    result$mul
    
    s <- result$sum
    m <- result$mul
    cat("5+8=",s,"\n")
    cat("5*8=",m,"\n")
    
    source("mylib.R")
    c <- myadd(10,55)
    cat("10 + 55 = ",c)
    
    source("mylib.R")
    c <- myminus(10,55)
    cat("10 - 55 = ",c)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    resours파일  mylib

    myadd <- function(x,y){
      return(x+y)
    }
    
    myminus <- function(x,y){
      return(x-y)
    }
    
    

     

    lab04

    # which함수 이해하기
    
    # 학생들 성적을 백터로 만들기
    score <- c(76,84,69,50,95,60,62,71,88,84)
    
    #which 함수 사용안하고 특정 데이터를 삭제 
    length(score)
    
    for (i in 1:length(score)) {
      print(score[i])
    }
    #69점을 획득한 학생의 인덱스를 얻기위해서 반복문사용
    for (i in 1:length(score)) {
      if (score[i]==69) {
        idx <- i
        break;
      }
      print(score[i])
    }
    
    idx
    
    # which()함수는 조건에 맞는 인덱스를 리턴함.
    idx <- which(score==69)#69점의 인덱스를 리턴.
    idx 
    
    # which()함수는 조건에 맞는 인덱스를 하나 혹은 여러개를 리턴함.
    idx <- which(score>=85)
    idx
    class(idx)
    
    # max()는 백터의 데이터 중 최고값을 리턴
    max(score)
    
    # which.max()는 최고값이 있는 인덱스를를 리턴
    which.max(score)
    
    min(score)
    which.min(score)
    
    idx <-  which(score<=60)
    idx
    score[idx] <- 61 #수정을 한꺼번에 함.
    score
    
    idx <- which(score>=80)
    idx
    #80점 이상인 학생을 추출하여 또 다른 백터를 만듬
    highscore <-score[idx]
    highscore
    
    idx <- which(iris$Petal.Length>5.0)
    idx
    length(idx)
    
    # 꽃잎의 길이가 5.0을 초과하는 데이터를 추출함
    irisbig <- iris[idx,]
    irisbig
    
    # 1~4 열에서의 값들 중에서 5.0을 초과된 값의 행과 열의 위치를 알고자 할때, 아래처럼 작성하면됨.
    idx <- which(iris[,1:4]>5.0,arr.ind = TRUE)
    idx
    idx <- which(iris[,1:4]>10.0,arr.ind = TRUE)
    idx
    idx <- which(iris[,1:4]>1.0,arr.ind = TRUE)
    idx
    dim(idx)
    
    

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading