如何从闪亮的应用程序的ggplot中删除NA值?

李彩云
library(shiny)
library(palmerpenguins)
library(ggplot2)
library(dplyr)

penguin <- penguins

penguin$year <- as.factor(penguin$year)




ui <- fluidPage(
  titlePanel("Data Visualisation of Penguins Data"),
  sidebarPanel(
    selectInput("yaxis",
                label = "Choose a y-axis variable to display",
                choices = list("bill_length_mm",
                               "bill_depth_mm",
                               "flipper_length_mm",
                               "body_mass_g"),
                selected = "bill_length_mm"),
    selectInput("xaxis",
                label = "Choose a x-axis variable to display",
                choices = c("species",
                            "sex",
                            "year"),
                selected = "sex"),
    checkboxGroupInput("islandlevels",
                       label = "Check to display different island levels",
                       choices = c("island"),
                       selected = NULL),
    br(), br(),
    selectInput("species",
                label = "Choose species to view separate plot",
                choices = list("Adelie",
                               "Chinstrap",
                               "Gentoo"),
                selected = NULL)),
  mainPanel(
    plotOutput("plot1"),
    br(), br(),
    plotOutput("plot2")
  )
)





server <- function(input, output){
  output$plot1 <- renderPlot({
    if(is.null(penguin))
      return(NULL)
  ggplot(penguin, aes(x = penguin[[input$xaxis]], y = penguin[[input$yaxis]])) +
    geom_boxplot()
})
}

shinyApp(ui = ui, server = server)

这是我的闪亮代码,但是当x轴变量为性别时,我想删除NA值。我不能只删除具有NA值的行,因为当我更改x轴变量或/和y轴变量时,必须使用变量(不丢失值,但该行具有丢失的值,例如图像2中的第9行)。 。我想找到解决方案,但我想知道应该使用什么功能。我必须使用if语句,反应函数还是其他?

预先感谢您的帮助。

具有NA值的性别变量(想删除我的地块上的NA)

企鹅数据中的NA值

r2evans

有条件地过滤数据,也许是这样的:

  dat <- reactive({
    if (input$xaxis == "sex") penguin[ !is.na(penguin$sex), ] else penguin
  })
  output$plot1 <- renderPlot({
    req(penguin, input$xaxis, input$yaxis)
    ggplot(dat(), aes_string(x = isolate(input$xaxis), y = input$yaxis)) +
      geom_boxplot()
  })

这里有几个重要的变化:

  1. 如果您想对过滤后的数据做更多的绘图,那么我将创建一个反应性数据组件,命名dat为过滤后的数据。这样,如果您曾经添加(说)一张表或另一幅图或某物,则无需对它们中的每一个进行选择性过滤,只需要在dat()任何地方使用,一切都会从中受益。

  2. 反应性可能是易变的,并且对数据和绘图都做出反应input$xaxis将导致对的每次更改都会绘制两次绘图xaxis因此,我isolate(input$xaxis)在情节中反应迟钝。当用户更改时xaxisdat将会更改,这将触发(一次!)绘图更改。(无需隔离yaxis,因为在这种情况下是正确的。)

  3. 通常,您不应使用ggplot2(x, aes(x$a, x$b))更具体地说,在主题定义中使用$和/或[[在主题aes定义中使用是不好的做法,在某些情况下会失败。aes与符号(例如,cyl来自mtcars)或aes_string字符串("cyl"一起使用会更好由于您是通过编程定义美学的,因此最好使用aes_string

  4. 我将您更改if (is.null(penguin))为Shiny的更具规范性req,并在输入中也添加了检查。尽管大多数更简单的闪亮应用程序并不总是需要此功能,但我发现更复杂的应用程序可能会导致输入实例化延迟足够长,以至于输出反应性块可能会在分配所有输入之前触发,这意味着在此示例中可能为input$xaxisnull。虽然不太可能在像这样的简单闪亮应用程序中使用,但我仍然认为它是安全的。

    可能有理由使用单独的req行,每个输入一行。在这种情况下,结果将是相同的,但有时将它们分开是有意义的。

    使用req禁止其余图的渲染,但也可以通过闪亮的组件识别,而不引起错误或渲染问题。(我更喜欢手动if (is.null(.)) return(NULL)逻辑。)


注意:我认为@stefan的答案可能是从轴上ggplot2省略NA的更规范的方法,因此也许这是解决问题的最佳方法。但是,我仍然相信,即使进行了Stefan的更改,第3点和第4点仍然(也)与您的应用程序相关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在闪亮的R应用程序中闪烁ggplot

来自分类Dev

在闪亮的应用程序中删除mainPanel区域

来自分类Dev

在闪亮的应用程序中删除反应性表达

来自分类Dev

如何退出闪亮的应用程序并返回值

来自分类Dev

使用“ actionButton”刷新闪亮应用程序中的输入值

来自分类Dev

如何在闪亮应用程序的 ggplot2 散点图中添加和删除 geom_smooth() 趋势线

来自分类Dev

如何在闪亮的应用程序中动态添加inputText?

来自分类Dev

如何在闪亮的应用程序中刷新Rdata对象

来自分类Dev

如何在闪亮的应用程序中呈现HTML图

来自分类Dev

闪亮:如何在闪亮的应用程序中添加反应条

来自分类Dev

RMarkdown在闪亮的应用程序中

来自分类Dev

闪亮应用程序中的参数文件

来自分类Dev

从闪亮的应用程序中的UI中选择数据后,如何将值(选择)传递给selectizeInput()?

来自分类Dev

如何将闪亮的应用程序中的反应式输入值插入MySQL数据库?

来自分类Dev

在ggplot2中制作的散点图在闪亮的应用程序中无法正确显示

来自分类Dev

读取多个文件时,ggplot图形未显示在闪亮的应用程序中-无法打开连接

来自分类Dev

如何删除ufw应用程序列表中的应用程序可用的应用程序?

来自分类Dev

在闪亮的应用程序中的输入过滤器中添加“所有值”

来自分类Dev

闪亮的应用程序:使用操作按钮删除UI对象

来自分类Dev

如何在闪亮的应用程序中响应用户输入进行pdf下载?

来自分类Dev

如何使用renderUI闪亮的应用程序R显示文本框编号的值

来自分类Dev

R闪亮:当应用程序中的字段留空时,使用函数默认值

来自分类Dev

在交互式R会话中从闪亮的应用程序返回值

来自分类Dev

在闪亮的应用程序中输入轴值作为输入时,不显示条形图

来自分类Dev

R闪亮应用程序的ShinyDashboard侧栏中的selectInput反应值保持为空

来自分类Dev

使用查询字符串中的默认值的闪亮应用程序?

来自分类Dev

如何删除应用程序?

来自分类Dev

如何在闪亮的应用程序中以交互方式创建超链接?

来自分类Dev

如何防止传单地图重置闪亮应用程序中的缩放?

Related 相关文章

  1. 1

    在闪亮的R应用程序中闪烁ggplot

  2. 2

    在闪亮的应用程序中删除mainPanel区域

  3. 3

    在闪亮的应用程序中删除反应性表达

  4. 4

    如何退出闪亮的应用程序并返回值

  5. 5

    使用“ actionButton”刷新闪亮应用程序中的输入值

  6. 6

    如何在闪亮应用程序的 ggplot2 散点图中添加和删除 geom_smooth() 趋势线

  7. 7

    如何在闪亮的应用程序中动态添加inputText?

  8. 8

    如何在闪亮的应用程序中刷新Rdata对象

  9. 9

    如何在闪亮的应用程序中呈现HTML图

  10. 10

    闪亮:如何在闪亮的应用程序中添加反应条

  11. 11

    RMarkdown在闪亮的应用程序中

  12. 12

    闪亮应用程序中的参数文件

  13. 13

    从闪亮的应用程序中的UI中选择数据后,如何将值(选择)传递给selectizeInput()?

  14. 14

    如何将闪亮的应用程序中的反应式输入值插入MySQL数据库?

  15. 15

    在ggplot2中制作的散点图在闪亮的应用程序中无法正确显示

  16. 16

    读取多个文件时,ggplot图形未显示在闪亮的应用程序中-无法打开连接

  17. 17

    如何删除ufw应用程序列表中的应用程序可用的应用程序?

  18. 18

    在闪亮的应用程序中的输入过滤器中添加“所有值”

  19. 19

    闪亮的应用程序:使用操作按钮删除UI对象

  20. 20

    如何在闪亮的应用程序中响应用户输入进行pdf下载?

  21. 21

    如何使用renderUI闪亮的应用程序R显示文本框编号的值

  22. 22

    R闪亮:当应用程序中的字段留空时,使用函数默认值

  23. 23

    在交互式R会话中从闪亮的应用程序返回值

  24. 24

    在闪亮的应用程序中输入轴值作为输入时,不显示条形图

  25. 25

    R闪亮应用程序的ShinyDashboard侧栏中的selectInput反应值保持为空

  26. 26

    使用查询字符串中的默认值的闪亮应用程序?

  27. 27

    如何删除应用程序?

  28. 28

    如何在闪亮的应用程序中以交互方式创建超链接?

  29. 29

    如何防止传单地图重置闪亮应用程序中的缩放?

热门标签

归档