if("shiny" %in% installed.packages("shiny") == FALSE)install.packages("shiny")
library(shiny)
ui <- shiny::fluidPage(
  sliderInput(
    inputId = "num1",
    label = "숫자를 선택하세요",
    value = 25,
    min =1,
    max = 50,
    step = 1
  ),
  plotOutput("hist")
)
server <- function(input, output){
          output$hist <- renderPlot({
          hist(rnorm(input$num1),
          maing = "50 범위내에서 선택")
    })
}

shiny::shinyApp(ui, server)

Shiny BMI

library(shiny)
bmi <- function(t,w){
  t <- t/100
  x <- w/(t*t)
  return ( if(x>=40){'고도 비만'}else
  if(x>=35 & x<40){'중등도 비만 (2단계 비만)'}else
  if(x>=30 & x<35){'경도 비만 (1단계 비만)'}else
  if(x>=25 & x<30){'과체중'}else
  if(x>=18.5 & x<25){'정상'}else
  {'저체중'})
}

bmi(180, 10)

ui <- fluidPage(
  numericInput("t","키 :",10, min=1, max=100),
  numericInput("w","몸무게 :",10, min=1, max=100),
  verbatimTextOutput("value")
)

server <- function(input, output, session) {
  output$value <- renderText({bmi(input$t,input$w)})
}

shinyApp(ui, server)

RPS

library(shiny)
library(shinyjs)

rps <- function(x){
  # 가위 1, 바위 2, 보 3
  # a - b = 0 비김
  # a - b = 1, -2 b 패배
  # a - b = -1, 2 b 승리
  if(x=='가위'){
    user <- 1
  }else if(x=='바위'){
    user <- 2
  }else{
    user <- 3
  }
  comp <- sample(1:3,1,replace = T)
  result <-  comp - user
  print(result)
  return (if(result == 1 | result == -2)'패배'
          else if(result == -1 | result ==2) '승리'
          else '비김')
}

ui <- fluidPage(
  titlePanel("가위바위보 게임"),
  sidebarLayout(
    sidebarPanel(
      helpText("가위, 바위, 보 중에서 선택하세요"),
      selectInput("var",
                  label = "가위바위보",
                  choices = c("가위","바위","보"),
                  selected = "가위")
      ),
      mainPanel(
        textOutput("selectedVar")
    )
  )
)

server <- function(input, output, session) {
  output$selectedVar <-  renderText(
    paste("경기결과 :",rps(input$var))
  )
}

if(interactive()){
  shinyApp(ui, server)  
}

pop

if("plotly" %in% installed.packages("plotly") == FALSE)install.packages("plotly")
library(plotly)
library(shiny)
data <- data.frame(
  Population <- sample(1:20,10,replace = T),
  HouseHolds <- sample(1:20,10,replace = T),
  year <- sample(c(2000,2010),10,replace = T)
)

ui <- fluidPage(
  titlePanel(
  title = h4("인구 조사", align = "center")
),
  sidebarPanel(
   sidebarLayout(
    radioButtons("YEAR","10년 주기선택",
                 choices = c("2000", "2010"),
                 selected = "2000"
                 )
   )
  ),
  mainPanel(
    plotOutput("bar",height=500)
  )
)

server <- function(input, output, session){
  reactive_data <- reactive({
    selected.year <- as.numeric(input$YEAR)
    return(data[data$year == selected_year])
  })
  output$bar <- renderPlot({
    color <- c("blud", "red")
    our_data <- reactive_data()
    barplot(colSums(our_data[,c("Population","HouseHolds")]),
      ylab <- "Total",
      xlab <- "Census Year",
      names.arg = c("Population","HouseHolds"),
      col = color)
  })
}

shinyApp(ui, server)
LS0tDQp0aXRsZTogIjIwMTgxMDA2IFNoaW55Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQpgYGB7cn0NCmlmKCJzaGlueSIgJWluJSBpbnN0YWxsZWQucGFja2FnZXMoInNoaW55IikgPT0gRkFMU0UpaW5zdGFsbC5wYWNrYWdlcygic2hpbnkiKQ0KbGlicmFyeShzaGlueSkNCnVpIDwtIHNoaW55OjpmbHVpZFBhZ2UoDQogIHNsaWRlcklucHV0KA0KICAgIGlucHV0SWQgPSAibnVtMSIsDQogICAgbGFiZWwgPSAi7Iir7J6Q66W8IOyEoO2Dne2VmOyEuOyalCIsDQogICAgdmFsdWUgPSAyNSwNCiAgICBtaW4gPTEsDQogICAgbWF4ID0gNTAsDQogICAgc3RlcCA9IDENCiAgKSwNCiAgcGxvdE91dHB1dCgiaGlzdCIpDQopDQpzZXJ2ZXIgPC0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCl7DQogICAgICAgICAgb3V0cHV0JGhpc3QgPC0gcmVuZGVyUGxvdCh7DQogICAgICAgICAgaGlzdChybm9ybShpbnB1dCRudW0xKSwNCiAgICAgICAgICBtYWluZyA9ICI1MCDrspTsnITrgrTsl5DshJwg7ISg7YOdIikNCiAgICB9KQ0KfQ0KDQpzaGlueTo6c2hpbnlBcHAodWksIHNlcnZlcikNCg0KYGBgDQoNCiMjIyBTaGlueSBCTUkNCg0KYGBge3J9DQpsaWJyYXJ5KHNoaW55KQ0KYm1pIDwtIGZ1bmN0aW9uKHQsdyl7DQogIHQgPC0gdC8xMDANCiAgeCA8LSB3Lyh0KnQpDQogIHJldHVybiAoIGlmKHg+PTQwKXsn6rOg64+EIOu5hOunjCd9ZWxzZQ0KICBpZih4Pj0zNSAmIHg8NDApeyfspJHrk7Hrj4Qg67mE66eMICgy64uo6rOEIOu5hOunjCknfWVsc2UNCiAgaWYoeD49MzAgJiB4PDM1KXsn6rK964+EIOu5hOunjCAoMeuLqOqzhCDruYTrp4wpJ31lbHNlDQogIGlmKHg+PTI1ICYgeDwzMCl7J+qzvOyytOykkSd9ZWxzZQ0KICBpZih4Pj0xOC41ICYgeDwyNSl7J+ygleyDgSd9ZWxzZQ0KICB7J+yggOyytOykkSd9KQ0KfQ0KDQpibWkoMTgwLCAxMCkNCg0KdWkgPC0gZmx1aWRQYWdlKA0KICBudW1lcmljSW5wdXQoInQiLCLtgqQgOiIsMTAsIG1pbj0xLCBtYXg9MTAwKSwNCiAgbnVtZXJpY0lucHV0KCJ3Iiwi66q466y06rKMIDoiLDEwLCBtaW49MSwgbWF4PTEwMCksDQogIHZlcmJhdGltVGV4dE91dHB1dCgidmFsdWUiKQ0KKQ0KDQpzZXJ2ZXIgPC0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgc2Vzc2lvbikgew0KICBvdXRwdXQkdmFsdWUgPC0gcmVuZGVyVGV4dCh7Ym1pKGlucHV0JHQsaW5wdXQkdyl9KQ0KfQ0KDQpzaGlueUFwcCh1aSwgc2VydmVyKQ0KDQpgYGANCiMjIyMgUlBTDQoNCmBgYHtyfQ0KbGlicmFyeShzaGlueSkNCmxpYnJhcnkoc2hpbnlqcykNCg0KcnBzIDwtIGZ1bmN0aW9uKHgpew0KICAjIOqwgOychCAxLCDrsJTsnIQgMiwg67O0IDMNCiAgIyBhIC0gYiA9IDAg67mE6rmADQogICMgYSAtIGIgPSAxLCAtMiBiIO2MqOuwsA0KICAjIGEgLSBiID0gLTEsIDIgYiDsirnrpqwNCiAgaWYoeD09J+qwgOychCcpew0KICAgIHVzZXIgPC0gMQ0KICB9ZWxzZSBpZih4PT0n67CU7JyEJyl7DQogICAgdXNlciA8LSAyDQogIH1lbHNlew0KICAgIHVzZXIgPC0gMw0KICB9DQogIGNvbXAgPC0gc2FtcGxlKDE6MywxLHJlcGxhY2UgPSBUKQ0KICByZXN1bHQgPC0gIGNvbXAgLSB1c2VyDQogIHByaW50KHJlc3VsdCkNCiAgcmV0dXJuIChpZihyZXN1bHQgPT0gMSB8IHJlc3VsdCA9PSAtMikn7Yyo67CwJw0KICAgICAgICAgIGVsc2UgaWYocmVzdWx0ID09IC0xIHwgcmVzdWx0ID09MikgJ+yKueumrCcNCiAgICAgICAgICBlbHNlICfruYTquYAnKQ0KfQ0KDQp1aSA8LSBmbHVpZFBhZ2UoDQogIHRpdGxlUGFuZWwoIuqwgOychOuwlOychOuztCDqsozsnoQiKSwNCiAgc2lkZWJhckxheW91dCgNCiAgICBzaWRlYmFyUGFuZWwoDQogICAgICBoZWxwVGV4dCgi6rCA7JyELCDrsJTsnIQsIOuztCDspJHsl5DshJwg7ISg7YOd7ZWY7IS47JqUIiksDQogICAgICBzZWxlY3RJbnB1dCgidmFyIiwNCiAgICAgICAgICAgICAgICAgIGxhYmVsID0gIuqwgOychOuwlOychOuztCIsDQogICAgICAgICAgICAgICAgICBjaG9pY2VzID0gYygi6rCA7JyEIiwi67CU7JyEIiwi67O0IiksDQogICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9ICLqsIDsnIQiKQ0KICAgICAgKSwNCiAgICAgIG1haW5QYW5lbCgNCiAgICAgICAgdGV4dE91dHB1dCgic2VsZWN0ZWRWYXIiKQ0KICAgICkNCiAgKQ0KKQ0KDQpzZXJ2ZXIgPC0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgc2Vzc2lvbikgew0KICBvdXRwdXQkc2VsZWN0ZWRWYXIgPC0gIHJlbmRlclRleHQoDQogICAgcGFzdGUoIuqyveq4sOqysOqzvCA6IixycHMoaW5wdXQkdmFyKSkNCiAgKQ0KfQ0KDQppZihpbnRlcmFjdGl2ZSgpKXsNCiAgc2hpbnlBcHAodWksIHNlcnZlcikgIA0KfQ0KDQpgYGANCg0KIyMjIHBvcA0KDQpgYGB7cn0NCmlmKCJwbG90bHkiICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKCJwbG90bHkiKSA9PSBGQUxTRSlpbnN0YWxsLnBhY2thZ2VzKCJwbG90bHkiKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KHNoaW55KQ0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBQb3B1bGF0aW9uIDwtIHNhbXBsZSgxOjIwLDEwLHJlcGxhY2UgPSBUKSwNCiAgSG91c2VIb2xkcyA8LSBzYW1wbGUoMToyMCwxMCxyZXBsYWNlID0gVCksDQogIHllYXIgPC0gc2FtcGxlKGMoMjAwMCwyMDEwKSwxMCxyZXBsYWNlID0gVCkNCikNCg0KdWkgPC0gZmx1aWRQYWdlKA0KICB0aXRsZVBhbmVsKA0KICB0aXRsZSA9IGg0KCLsnbjqtawg7KGw7IKsIiwgYWxpZ24gPSAiY2VudGVyIikNCiksDQogIHNpZGViYXJQYW5lbCgNCiAgIHNpZGViYXJMYXlvdXQoDQogICAgcmFkaW9CdXR0b25zKCJZRUFSIiwiMTDrhYQg7KO86riw7ISg7YOdIiwNCiAgICAgICAgICAgICAgICAgY2hvaWNlcyA9IGMoIjIwMDAiLCAiMjAxMCIpLA0KICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9ICIyMDAwIg0KICAgICAgICAgICAgICAgICApDQogICApDQogICksDQogIG1haW5QYW5lbCgNCiAgICBwbG90T3V0cHV0KCJiYXIiLGhlaWdodD01MDApDQogICkNCikNCg0Kc2VydmVyIDwtIGZ1bmN0aW9uKGlucHV0LCBvdXRwdXQsIHNlc3Npb24pew0KICByZWFjdGl2ZV9kYXRhIDwtIHJlYWN0aXZlKHsNCiAgICBzZWxlY3RlZC55ZWFyIDwtIGFzLm51bWVyaWMoaW5wdXQkWUVBUikNCiAgICByZXR1cm4oZGF0YVtkYXRhJHllYXIgPT0gc2VsZWN0ZWRfeWVhcl0pDQogIH0pDQogIG91dHB1dCRiYXIgPC0gcmVuZGVyUGxvdCh7DQogICAgY29sb3IgPC0gYygiYmx1ZCIsICJyZWQiKQ0KICAgIG91cl9kYXRhIDwtIHJlYWN0aXZlX2RhdGEoKQ0KICAgIGJhcnBsb3QoY29sU3VtcyhvdXJfZGF0YVssYygiUG9wdWxhdGlvbiIsIkhvdXNlSG9sZHMiKV0pLA0KICAgICAgeWxhYiA8LSAiVG90YWwiLA0KICAgICAgeGxhYiA8LSAiQ2Vuc3VzIFllYXIiLA0KICAgICAgbmFtZXMuYXJnID0gYygiUG9wdWxhdGlvbiIsIkhvdXNlSG9sZHMiKSwNCiAgICAgIGNvbCA9IGNvbG9yKQ0KICB9KQ0KfQ0KDQpzaGlueUFwcCh1aSwgc2VydmVyKQ0KDQpgYGANCg0K