【问题标题】:If statement R shiny如果语句 R 闪亮
【发布时间】:2018-03-05 23:02:14
【问题描述】:

我正在尝试在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)

【问题讨论】:

  • 最好不要使用内置函数名作为变量名(例如 min)。 distance() &lt; min() 无法工作。您测试一个功能是否低于另一个功能。没有意义。
  • cord 也是一种反应式,所以像这样访问它cord()

标签: r shiny


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2021-09-21
    • 1970-01-01
    • 2012-10-30
    • 2016-05-20
    • 2017-04-04
    • 1970-01-01
    相关资源
    最近更新 更多