如果声明R闪亮

时间:2018-03-05 11:53:15

标签: r shiny

我正在尝试在Shiny中使用if语句。

我想在for()循环之外使用“min”和“name”变量。

我尝试将if()语句放在reactive中,但我无法访问“min”和“name”变量。

代码:

server=function(input, output){

cord <- reactive({matrix(c(input$long,input$lat),nrow=1,ncol=2)})

min=reactive({distHaversine(c(b[1,2],b[1,3]),c(cord[,1],cord[,2]))})

for (i in 1:15){
  distance=reactive({distHaversine(c(b[i,2],b[i,3]),c(cord[,1],cord[,2]))})


  if(distance() < min())
  {
  min=distance()
  name=reactive({CO[i,1]})
  }
}

data=reactive({name()})
output$table<-renderTable(data())
}

shinyApp(ui=ui,server=server)

1 个答案:

答案 0 :(得分:1)

根据您的新机票Table name and not table being displayed R Shiny

library(shiny)

ui <- fluidPage(renderTable("table"))

server <- function(input, output, session){

  v <- reactiveValues()

  cord <- reactive({
    req(input$long)
    req(input$lat)
    mc <- matrix(c(input$long,input$lat),nrow=1,ncol=2)
    v$ans <- distHaversine(mc(b[1,2],b[1,3]),c(mc[,1],mc[,2]))
    mc
  })

  data <- reactive({

    for(i in 1:15){
      distance <- distHaversine(c(b[i,2],b[i,3]),c(cord()[,1],cord()[,2]))

      if(distance < v$ans){
        v$ans <- distance
        return(CO[i,1])
      }
    }
  })

  output$table <- renderTable({
    data()
  })
}

shinyApp(ui=ui,server=server)