【问题标题】:NAs introduced by coercion but i don't want just to delete the warning强制引入的 NA,但我不想只是删除警告
【发布时间】:2018-12-03 21:42:38
【问题描述】:

在一个闪亮的应用程序下方,该应用程序旨在绘制之间的乘法之和

  • csv 的值:as.numeric(as.character(s$ascor[1], na.rm=TRUE))
  • 滑块值的值:input$green/100

问题是情节不是动态的;图上的 y = NA(见附图);不知道怎么回事

我已经检查了这个,但它只是说删除警告,所以它不能解决情节问题 ==> How to avoid warning when introducing NAs by coercion

代码下方:

library(shiny)
library(ggplot2)

# Define UI for slider demo app ----
ui <- fluidPage(

  # App title ----
  titlePanel("Sliders"),

  # Sidebar layout with input and output definitions ----
  sidebarLayout(

    # Sidebar to demonstrate various slider options ----
    sidebarPanel(

      # Input: Simple integer interval ----
      sliderInput("green", "Green:",
                  min = 0, max = 200,
                  value = 50),

      # Input: Decimal interval with step value ----
      sliderInput("blue", "Blue:",
                  min = 0, max = 200,
                  value = 50, step = 0.1),

      # Input: Specification of range within an interval ----
      sliderInput("red", "Red:",
                  min = 0, max = 200,
                  value = 50),

       # Input: Specification of range within an interval ----
      sliderInput("yellow", "Yellow:",
                  min = 0, max = 200,
                  value = 50),

      sliderInput("purple", "Purple:",
                  min = 0, max = 200,
                  value = 50),

      sliderInput("brown", "Brown:",
                  min = 0, max = 200,
                  value = 50),

      sliderInput("black", "Black:",
                  min = 0, max = 200,
                  value = 50),
      sliderInput("white", "White:",
                  min = 0, max = 200,
                  value = 50),

      sliderInput("pink", "Pink",
                  min = 0, max = 200,
                  value = 50),
      sliderInput("orange", "Orange",
                  min = 0, max = 200,
                  value = 50),
      sliderInput("gold", "Gold",
                  min = 0, max = 200,
                  value = 50)
    ),



    # Main panel for displaying outputs ----
    mainPanel(

      # Output: Table summarizing the values entered ----
      tableOutput("values"),
      plotOutput('distPlot')  

    )
  )
)

# Define server logic for slider examples ----
server <- function(input, output) {



  # Reactive expression to create data frame of all input values ----
  sliderValues <- reactive({

    data.frame(
      Name = c("Total"),
      Value = as.character(c(input$green/100*as.numeric(as.character(s$ascor[[1]], na.rm=TRUE))+input$blue/100*as.numeric(as.character(s$ascor[[2]], na.rm=TRUE))+input$red/100*as.numeric(as.character(s$ascor[[3]], na.rm=TRUE))+input$yellow/100*as.numeric(as.character(s$ascor[[4]], na.rm=TRUE))+input$purple/100*as.numeric(as.character(s$ascor[[5]], na.rm=TRUE))+input$brown/100*as.numeric(as.character(s$ascor[[6]], na.rm=TRUE))+input$black/100*as.numeric(as.character(s$ascor[[7]], na.rm=TRUE))+input$white/100*as.numeric(as.character(s$ascor[[8]], na.rm=TRUE))+input$pink/100*as.numeric(as.character(s$ascor[[10]], na.rm=TRUE))+input$orange/100*as.numeric(as.character(s$ascor[[11]], na.rm=TRUE))+input$gold/100*as.numeric(as.character(s$ascor[[12]], na.rm=TRUE)))),
                             stringsAsFactors = FALSE)

  })



  # Show the values in an HTML table ----
  output$distPlot <- renderPlot({

    # Render a barplot
    sliderValues <- data.frame(
      Name = c("Total"),
      Value = as.character(c(input$green/100*as.numeric(as.character(s$ascor[[1]], na.rm=TRUE))+input$blue/100*as.numeric(as.character(s$ascor[[2]], na.rm=TRUE))+input$red/100*as.numeric(as.character(s$ascor[[3]], na.rm=TRUE))+input$yellow/100*as.numeric(as.character(s$ascor[[4]], na.rm=TRUE))+input$purple/100*as.numeric(as.character(s$ascor[[5]], na.rm=TRUE))+input$brown/100*as.numeric(as.character(s$ascor[[6]], na.rm=TRUE))+input$black/100*as.numeric(as.character(s$ascor[[7]], na.rm=TRUE))+input$white/100*as.numeric(as.character(s$ascor[[8]], na.rm=TRUE))+input$pink/100*as.numeric(as.character(s$ascor[[10]], na.rm=TRUE))+input$orange/100*as.numeric(as.character(s$ascor[[11]], na.rm=TRUE))+input$gold/100*as.numeric(as.character(s$ascor[[12]], na.rm=TRUE)))),
                             stringsAsFactors = FALSE)
      p <- ggplot(sliderValues(), aes(x=Name, y=Value)) +geom_bar(stat = "identity")
 print(p)


  })


}


shinyApp(ui, server)

所以我收到此错误消息:

Listening on http://127.0.0.1:5216
Warning in data.frame(Name = c("Total"), Value = as.character(c(input$green/100 *  :



Listening on http://127.0.0.1:5216
Warning in data.frame(Name = c("Total"), Value = as.character(c(input$green/100 *  :
  NAs introduits lors de la conversion automatique
Warning in data.frame(Name = c("Total"), Value = as.character(c(input$green/100 *  :
  NAs introduits lors de la conversion automatique
Warning in data.frame(Name = c("Total"), Value = as.character(c(input$green/100 *  :

enter image description here enter image description here

【问题讨论】:

  • 不知道如何编辑帖子但我忘了截图附件
  • 在您的铭牌对面的屏幕左侧有一个编辑链接(^^ 在 cmets 正上方)
  • 什么是s$ascor?我在代码中找不到。
  • 谢谢!所以这是我的第一篇文章,我忘记了很多东西,包括格式,对不起!
  • 我现在正在尝试编辑,但确认正在无限加载,可能是因为屏幕截图;让我们看看!

标签: r shiny


【解决方案1】:

感谢How to read in numbers with a comma as decimal separator?

CSV 文件采用欧式格式,使用逗号而不是小数点,即 0,5 而不是 0.5。 我更改了数据集,以便 R 将数据视为数字而不是字符串。

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多