【问题标题】:Shiny: textInput does not respond in R闪亮:textInput 在 R 中没有响应
【发布时间】:2021-04-10 12:09:22
【问题描述】:

我编写的代码可以使绘图变得闪亮。正如您在代码中看到的那样,当我使用 plot(c(12,11)) 时,我得到了图,但是当我使用 plot(c(input$ vec)) 或 plot(input$ vec) 时,我并没有改变地块。

library(shiny)
library(ggplot2)
library(dplyr)
library(purrr)
ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      textInput('vec', 'Enter a vector (comma delimited)', "0,1")
    ),
    
    mainPanel(
      plotOutput(outputId = "distPlot"),
    )
  )
)
           
      server <- function(input, output) {
        output$distPlot <- renderPlot({
          qo <- function(x,m) { 
            p<-x^3+m^3
            return(p)
          }
          
          plot <- function(m) {
            ggplot(tibble(x = c(-10, 20)), aes(x)) +
              map(m, 
                  ~stat_function(fun = qo, aes(color = paste0("heat ", .)), args=list(m = .)))
            
          }
          plot(c(12,11))
          
        
      })
        }
shinyApp(ui,server)

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    问题在于input$vec 是一个字符串。要在函数中使用输入,您首先必须将字符串拆分为单个数字并转换为数字,例如使用vec &lt;- as.numeric(trimws(unlist(strsplit(input$vec, split = ","))))。这里我首先使用strsplit将字符串分割为,,使用unlist将结果列表转换为向量,通过trimws删除空格,最后转换为数字。

    之后您可以应用您的功能:

    library(shiny)
    library(ggplot2)
    library(dplyr)
    library(purrr)
    
    ui <- fluidPage(
      sidebarLayout(
        sidebarPanel(
          textInput('vec', 'Enter a vector (comma delimited)', "0,1")
        ),
        
        mainPanel(
          plotOutput(outputId = "distPlot"),
        )
      )
    )
    
    server <- function(input, output) {
      output$distPlot <- renderPlot({
        qo <- function(x,m) { 
          p<-x^3+m^3
          return(p)
        }
        
        plot <- function(m) {
          ggplot(tibble(x = c(-10, 20)), aes(x)) +
            map(m, 
                ~stat_function(fun = qo, aes(color = paste0("heat ", .)), args=list(m = .)))
          
        }
        vec <- as.numeric(trimws(unlist(strsplit(input$vec, split = ","))))
        
        plot(vec)
        
      })
    }
    shinyApp(ui,server)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      • 2018-11-17
      • 2021-06-15
      • 2015-11-16
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      相关资源
      最近更新 更多