1

我正在学习和开发一个闪亮的应用程序。很棒的东西!

我有一个返回 true/false 的 checkboxInput,我需要将其转换为数字 1/0 并在表格内的公式中使用它。我的真实示例有些复杂,但我在下面提取了一个 stackoverflow-life 示例。帮助表示赞赏!

在下面的应用程序中,用户首先选择复选框输入进行播放,然后在左侧面板中输入一个数字。主面板显示输入数、输出数(在本例中为输入的平方)和 checkboxInput 的“状态”的表格,即 True 或 False。

我想返回 1 或 0 而不是 True 或 False。

在现实生活中,我的左侧面板采用数字列表以及 True/False 语句,公式从中返回要显示在表格中的数字。True/False 语句就像虚拟变量。

这是ui.R

# ui.R
library("shiny")
# Define UI for slider demo application
shinyUI(
  pageWithSidebar(
    # Title
    headerPanel("Input-Output Shiny App")
     ,
     # User Input in sidebar panel
     sidebarPanel(
      # Yes/No
      wellPanel(
        checkboxInput("play", "Do you want to play?", FALSE)
         , 
         conditionalPanel(
           condition="input.play==true"
          , 
          numericInput("myinput", "My Input:", 0)
         )#end conditionalPanel
       )#end wellPanel
    )# end sidebarPanel
    ,
    # Output in main panel
    # See output$myResults in server.R
    mainPanel(
      tableOutput("myResults")
    )# end mainPanel
  )#end pageWithSidebar
)#end shinyUI 

这是服务器.R

# server.R
library("shiny")
shinyServer(
  function(input, output) {
    myFunction <- function(myinput)
      {
      # compute output
      myoutput <- myinput*myinput
      myoutput
      }
    # Show computed values
    output$myResults <- renderTable(
      {
        r1 <- c("My Input",input$myinput)
        r2 <- c("My Output",myFunction(input$myinput))
        r3 <- c("Are you playing?",input$play)
        myTable <- do.call(rbind, list(r1,r2,r3))
        myTable
      }
      , align = c("lcc")
      , include.rownames = FALSE
      , include.colnames = FALSE
      , sanitize.text.function = function(x) x
    )#end renderTable         
  }#end function(input,output)
)#end shinyServer

这是一个屏幕截图:

在此处输入图像描述

4

1 回答 1

5

as.integer恰好分别转换为 1TRUEFALSE0。

更一般地,您可以使用iforifelse函数来完成此操作。

play <- TRUE # or FALSE
r3 <- ifelse(play, "You bet!", "No way!")
于 2013-11-06T15:33:30.037 回答