r - Shiny 的复选框

标签 r shiny

我想创建一个 Shiny 的复选框,允许我将输入变量之一的符号从正变为负

从输入:

sidebarLayout(
sidebarPanel(
  numericInput(inputId = "CE",
               label = "...:",
               min = 0,
               max = 1,
               value = 0.001),
  checkboxInput("CHECKBOX","Checkbox", FALSE), 

....
server <- function(input, output) 
output$Power_dropM <- renderText({
if(input$CHECKBOX=TRUE) {
  bzc <- -(sqrt(abs(input$CE)) * sign(input$CE))    
  bzm <- sqrt(abs(input$ME)) * sign(input$ME)   
}else{
bzc <- sqrt(abs(input$CE)) * sign(input$CE)     
bzm <- sqrt(abs(input$ME)) * sign(input$ME)     
}

生成的这些数字在下游进一步使用,因此我希望命名保持不变,只需通过选中该框来更改符号。

但是,此代码只是给我一个错误:
Error in parse(file, keep.source = FALSE, srcfile = src, encoding = enc) : 
  C:/Users/ghmoen/Documents/SEM/ShinyApp210618.R:76:22: unexpected '='
75:     
76:     if(input$CHECKBOX=
                     ^
Error in sourceUTF8(fullpath, envir = new.env(parent = globalenv())) : 
  Error sourcing C:\Users\ghmoen\AppData\Local\Temp\Rtmp2T3R18\file57b0565138b6

最佳答案

在这种情况下,您的错误是由 if(input$CHECKBOX=TRUE) 引起的.要检查相等性,您需要使用 double = ,所以 if(input$CHECKBOX==TRUE) .在这种情况下,它甚至可以简化为 if(input$CHECKBOX) ,因为您的变量是 bool 值。

但是顺便说一句,更改符号的稍微简单的方法可能是添加乘数 +1-1到变量。例如,要更改符号,您可以执行以下操作:

library(shiny)

# Create ui
ui <- fluidPage(
  numericInput('bzc','bzc',value=2),
  numericInput('bzm','bzm',value=2),
  checkboxInput('change_sign','Change sign'),
  textOutput('text')
)

server <- function(input, output) {

  output$text <- renderText({
    bzc = ifelse(input$change_sign,-1,1) * input$bzc
    bzm = input$bzm
    paste0('bzc: ', bzc, ', bzm: ', bzm)
  })

}

shinyApp(ui = ui, server = server)

关于r - Shiny 的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50982107/

相关文章:

r - 在R中将条形图转换为饼图

javascript - 将 CSS 样式应用于数据表中的特定列

r - Shiny 的仪表板-显示专用的“正在加载..”页面,直到完成数据的初始加载

r - 替换大型 data.frame 中多个值的最快方法

r - 如何正确关闭R中的连接,以便释放其连接 'slot'?

r - 在 R 中使用合并一个数据框

r - 多次尝试一个表达式,直到它在 R 中成功

r - 在 Shiny 中对静态图像进行动画处理

css - 如何在 rMarkdown flexdashboard 中水平对齐输入元素

r - 如何让 Windows 识别到 R 中的 "pt_br.utf-8"