# 패키지
    # animation : 애니메이션을 GIF, HTML 등과 같은 포멧으로 저장하는 기능 제공.
    
    # 10부터 1까지 1초 간격으로 숫자가 감소하는 애니메이션션(카운트다운)
    
    # 애니메이션 패키지 설치 / 로딩
    install.packages("animation")
    library(animation)
    
    # 함수 정의와 호출
    # 삼각형 면적구하는 함수
    getTriangleArea <- function(w, h){
      area <- w * h / 2
      return(area)
    }
    
    getTriangleArea(10,5)
    
    # 애니메이션 옵션 설정, 조정함
    # 매개변수 - interval : 애니메이션 시간간격(초), 디폴트 1
    # nmax : 최대반복수
    
    # 1초 간격의 애니메이션 시간 설정
    ani.options(interval =1)
    # 그래픽 프레임 생성
    plot.new()
    
    # 10~0까지 반복 실행
    for (i in 10:0) {
      # 그래픽 프레임 영역 설정
      rect(0,0,1,1,col = "yellow")
      text_size <- 11-i #숫자크기 설정(i가 감소하면서 점점커짐)
      text(0.5,0.5,i, cex = text_size, col = rgb(0,0,1,1))
      # 애니메이션 설정 시간(1초)만큼 대기
      ani.pause()
    }
    
    # 2) 랜덤 막대그래프
    # 1초 간격으로 0~1 사이의 5개 난수를 만들어서 막대그래프 출력
    
    # runif() : 균등분포에서 표본 추출가능
    # 매개변수 (runif(n, min=0, max=1))
    # n : 표본추출수, min : 분포의 하한선, max : 분포의 상향선
    
    # 1초 간격의 애니메잇ㄴ 시간 설정
    ani.options(interval = 1)
    # 무한반복 ('ESC'키를 누르면 반복종료)
    while (TRUE) {
      # 0~1사이의 5개 난수 추출
      y <- runif(5, 0, 1)
      # 바차트 출력, 5개 무지개색의 팔레트 이용 
      barplot(y, 
              ylim = c(0,1),
              col = rainbow(5))
      # 애니메이션 설정 시간(1초)만큼 대기.
      ani.pause()
    }
    
    # for(val int 백터값)(
    # 명령문
    # )
    sum <- 0 
    for (i in 1:10) {
      if(i %% 2 == 0)
        next
      sum <- sum+i;  
    }
    print(sum)
    
    sum <- 0
    i <- 1
    while (i <= 10) {
      sum <- sum + i
      i <- i + 1
    }
    print(sum)
    
    sum <- 0
    i <- 1
    repeat{
      sum <- sum + i
      i <- i + 1
      if(i>10)
        break
    }
    print(sum)
    
    # 3) 동전 던지기 활률의 변환 차트
    # 동전을 2개 동시에 던질때, 앞면이 나올 활률
                      #동전
    #  확률 표본  동전1     동전 2      앞면의 수   수학적 활률
    # ---------------------------------------------------------
    #      1       앞         앞            2           1/4
    #      2       앞         뒤            1           2/4
    #      3       뒤         앞            1           2/4
    #      4       뒤         뒤            0           1/4
    
    # 애니메이션 시간을 0.2 초로 설정.
    # 500번 반복, 각각 2개의 동전을 동시에 던질때 앞면이 나온수
    # (0,1,2)의 빈도의 누적값을 확률로 변환 => 막대그래프로 출력.
    
    plot.new() #새화면 출력
    
    # sample(x, size, replace=FALSE)
    # 매개변수 x : 표본추출 대상이 되는 백터
    # 매개변수 size : 추출할 표본의 수
    # replace : 복원 추출(TRUE), 비복원 추출(false)-디폴트
    
    
    # 앞면 발생 수별로 빈도 초기화
    # 1번째 위치 : 모두 0인 빈도
    # 2번째 위치 : 하나가 1(합이 1)인 빈도
    # 3번째 위치 : 모두 1인 빈
    count <- c(0,0,0)
    for (n in 1:500) { #500회 반복
      # 0(뒷면), 1(앞면), ehdwjsdmf 2ghl qhrdnjs cncnffh ejswla
      # (동전 2개를 동시에 던지는 효과)
      coin <- sample(c(0,1),2,replace =T)
      # 앞면이 나올 수별로 빈도를 저장할 변수
      # 두 동전의 합(0,1 또는 2) + 1
      index <- sum(coin) + 1
      # 앞면이 나올 수별로 빈도률 1증가
      # count()
      count[index] <- count[index] + 1
      # 앞면이 나올 수별 확률
      probability <- count / n
      
      title <- paste("반복 수 : ", n, "/500")
      
      barplot(probability, # 확률에 대한 바 차트
              names.arg = c(0,1,2),
              xlab = "앞면이 나올 횟수",
              ylab = "확률",
              col = rainbow(3),
              main = title
              )
      # 0.05초 실행 대기(애니메이션 효과)
      Sys.sleep(0.05)
    }
    
    
    
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading