【问题标题】:renderText isn't printing output in my Shiny applicationrenderText 不在我的 Shiny 应用程序中打印输出
【发布时间】:2022-11-19 23:48:32
【问题描述】:

我有一个简单的 Shiny 应用程序,可以打印数据集的正态分布。它使用 selectInput 允许用户更改他们想要查看绘制的数据集。应用程序的那部分工作。我想在 renderPlot 下添加一个 renderText 部分,以根据用户的选择显示平均值和标准偏差,但应用程序上没有显示任何文本。相反,当我希望它显示在实际 Shiny 应用程序的绘图下方时,我的文本会输出到控制台。

截至目前,这是我的 server.R 代码:

# This application will allow the user to view the standard normal distribution for multiple different datasets
# This app demonstrates use of the selectInput and submitButton features available in Shiny

library(shiny)
library(dplyr)


# Cars dataset
data("mtcars")

x_cars <- mtcars$mpg
avg_cars <- mean(x_cars)
stdev_cars <- sd(x_cars)
y_cars <- dnorm(x_cars, avg_cars, stdev_cars)


# PlantGrowth dataset
data("PlantGrowth")

x_plants <- filter(PlantGrowth, group =="ctrl")
x_plants <- select(x_plants, weight)
x_plants <- as.numeric(unlist(x_plants))

avg_plants <- mean(x_plants)
stdev_plants <- sd(x_plants)
y_plants <- dnorm(x_plants, avg_plants, stdev_plants)


# USArrests
data("USArrests")

x_murders <- select(USArrests, Murder)
x_murders <- as.numeric(unlist(x_murders))

avg_murders <- mean(x_murders)
stdev_murders <- sd(x_murders)
y_murders <- dnorm(x_murders, avg_murders, stdev_murders)







# If statements for determining which dataset is the desired output
shinyServer(function(input, output) {

    output$distPlot <- renderPlot({

        if (input$Dataset == "mtcars") {
          plot(x_cars,y_cars,main="Average mpg of all cars in mtcars dataset", xlab="mpg", ylab="Probability Density")
        }
        if (input$Dataset == "PlantGrowth") {
          plot(x_plants,y_plants,main="Average weight of plants in the control group", xlab="Plant Weight",ylab="Probability Density")
        }
        if (input$Dataset == "USArrests") {
          plot(x_murders,y_murders,main="Number of murders by US state", xlab="Murder Count", ylab="Probability Density")
        }


    })
    
    output$textOut <- renderText({
      
        cat("This simple Shiny app demonstrates usage of the selectInput and submitButton features\n")
        if (input$Dataset == "mtcars") {
          cat("Mean: ", avg_cars, "\n")
          cat("Standard Deviation: ", stdev_cars, "\n")
        }
        if (input$Dataset == "PlantGrowth") {
          cat("Mean: ", avg_plants, "\n")
          cat("Standard Deviation: ", stdev_plants, "\n")
        }
        if (input$Dataset == "USArrests") {
          cat("Mean: ", avg_murders, "\n")
          cat("Standard Deviation: ", stdev_murders, "\n")
        }
      
    })

})

这是我的 ui.R 代码:

library(shiny)

# Define UI for application that draws a histogram
shinyUI(fluidPage(

    # Application title
    titlePanel("Old Faithful Geyser Data"),

    # Sidebar with a slider input for number of bins
    sidebarLayout(
        sidebarPanel(
            selectInput(inputId="Dataset","Dataset",label="Select desired dataset:",choices=c("mtcars","PlantGrowth","USArrests")),
            
            submitButton("Confirm Changes")),

        # Show a plot of the generated distribution
        mainPanel(
            plotOutput("distPlot"),
            textOutput("textOut")
        )
    )
))

【问题讨论】:

    标签: r plot shiny cat


    【解决方案1】:

    不要使用cat()。您必须在renderText 中返回一个字符串。所以用paste替换cat

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      相关资源
      最近更新 更多