反应变化最小/最大范围+ 2个数据帧闪亮

2024-02-28

我的 Shiny 应用程序有一个问题。首先,我有两个dataframes其中有两个numeric列 (number and number2)。我也有动态用户界面sliderInput。闪亮的应用程序工作正常,直到...当我选择时Item数据框,选择number in Y-axis variable并设置range in sliderInput之间,例如15和18,之后我想改变Y-axis variable to number2我收到错误:
Error in eval(substitute(expr), envir, enclos) : wrong result size (2), expected 0 or 1
我知道这个问题是因为数字引起的number2列介于 1 和 10 之间,之前的设置不包括该数字。谁能告诉我如何改进它?

ui.R

library(ggvis)

shinyUI(fluidPage(

titlePanel(""),

sidebarLayout(
 sidebarPanel(
  radioButtons("dataset", label = h4("Choose dataframe"),
               choices = list("Item" = "df1", "Task" = "df2")),
   selectInput("yvar", "Y-axis variable", axis_vars_y, selected = "number"),
   uiOutput("slider")
   ),
mainPanel(
  ggvisOutput("plot")
  )
 )
))

server.R

library(shiny)
library(dplyr)
library(magrittr)
library(lazyeval)

df1_number <-sample(seq(1,20,0.01),20,replace = T)
df2_number <-sample(seq(1,20,0.01),20,replace = T)
df1_number2 <-sample(seq(1,10,0.01),20,replace = T)
df2_number2 <-sample(seq(1,10,0.01),20,replace = T)

df1 <- data.frame(name = rep(letters[1:4],each = 5), number = df1_number, number2 = df1_number2)
df2 <- data.frame(name = rep(letters[1:4],each = 5), number = df2_number, number2 = df2_number2)
axis_vars_y <- c("number" = "number", "number2" = "number2")



shinyServer(function(input, output) {

  datasetInput <- reactive({
    switch(input$dataset,
           df1 = df1,
           df2 = df2)
  })

  axis_vara_y <- reactive({
    switch(input$yvar,
           number = 2,
           number2 = 3)
  }) 

    output$slider <- renderUI({
      sliderInput("inslider","Slider", min   = min(datasetInput()[,axis_vara_y()]), 
                                       max   = max(datasetInput()[,axis_vara_y()]),
                                       value = c(min(datasetInput()[,axis_vara_y()]), 
                                                 max(datasetInput()[,axis_vara_y()])),
                                       step = 0.5)
})

  data <- reactive({
    filteredData <- datasetInput()
    if(!is.null(input$inslider)){
      filteredData <- filteredData %>%
        filter(filteredData[,axis_vara_y()] >= input$inslider[1],
               filteredData[,axis_vara_y()] <= input$inslider[2])
    }
    filteredData
})

  data_two <- reactive({
    data() %>%
      mutate(id = 1:n())

  })  

  vis <- reactive({

    yvar_name <- names(axis_vars_y)[axis_vars_y == input$yvar]
    yvar <- prop("y", as.symbol(input$yvar))

    data_two %>%
      ggvis(x = ~name, y = yvar) %>%    
      layer_points(size := 120,
                     fill = ~name,
                     fillOpacity := 0.6, 
                     key := ~id)

      })
      vis %>% bind_shiny("plot")
    })

Update-------------------------------------------------- -------------------------------------------------

相同error当我设置的范围不包含任何值时会发生number列(例如 13 到 14 之间)。


正如您所意识到的,您收到错误是因为过滤后的数据集没有行。一个简单的解决方法是返回完整的数据集。这将重置inputSlider以便您继续工作而不会出现错误。你只需要改变你的反应data功能。

data <- reactive({
  filteredData <- datasetInput()
  axisData <- axis_vara_y()

  if(!is.null(input$inslider)){
    filteredData <- filteredData %>%
      filter(filteredData[,axisData] >= input$inslider[1],
             filteredData[,axisData] <= input$inslider[2])
  }

  # the new part to reset the slider
  if(nrow(filteredData) == 0){
    return(datasetInput())
  }else{
    return(filteredData)
  }
})

我冒昧地稍微简化了代码,因为您可以分配反应性数据语句,而不会让闪亮的应用程序多次调用它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反应变化最小/最大范围+ 2个数据帧闪亮 的相关文章

  • 获取所有参数作为列表

    R 是否提供对象 函数 方法 关键字来获取所有函数参数 使用一个例子 function a b default 会提供a and b也 在函数环境内 有没有类似的说法list 这还包括a and b在结果中 或者换一种方式 简写list a
  • 根据条件计算平均值

    下面是我的数据框 Row ID A B 1 0 0 2 0 0 3 0 0 4 0 1 5 0 1 6 0 1 7 62 75 0 8 100 0 9 100 0 10 100 1 11 100 1 12 100 1 13 100 1 14
  • 如何导入 .tsv 文件

    我需要读取一个表 tsvR 中的文件 test lt read table file drug info tsv Error in scan file what nmax sep dec quote skip nlines na strin
  • R CMD 检查警告:在文档对象中使用的函数/方法...但不在代码中

    我正在写一个包 但一个持久的R CMD check警告阻止我完成包裹并将其发布到 CRAN 我用roxygen2对于内联文档 尽管这可能不是错误的根本原因 如果您知道如何删除此警告 我很可能可以找到一种方法来使用roxygen2 如何删除警
  • R testthat 单元测试数据和辅助函数约定

    我正在编写一个 R 包 并使用 testthat 进行单元测试 我的许多单元测试都是为了测试适用于我的包特定对象的功能 对于这些测试 我创建了一个辅助函数来设置模拟对象 我还有一些其他辅助函数来减少单元测试中的代码量 目前这些辅助函数在我的
  • 通过删除连续的重复项来减少字符串长度

    我有一个包含 2 个字段的 R 数据框 ID WORD 1 AAAAABBBBB 2 ABCAAABBBDDD 3 我想通过仅保留字母而不是重复中的重复项来简化具有重复字母的单词 e g AAAAABBBBB应该给我AB and ABCAA
  • R:install.packages 中出现错误:无法打开连接

    我试图安装 RINDSEL 包 但无法安装它 并且不断收到以下错误 install packages 中出错 无法打开连接 我从以下位置下载了该软件包 rindsel 1 0 2 zip 综合养殖平台 http old ibpdev net
  • 如何更改数据表中的少数列名称

    我有一个包含 10 列的数据表 town tc one two three four five six seven total 需要生成我正在使用的列 一 到 总计 的平均值 DTmean lt DT lapply SD mean by t
  • 用于带有嵌套子图的图的 r 包? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个用于图形 网络的 r 包 它可以处理嵌套子图 Graphviz 做到了这一点 但只提供可
  • R data.table fread 使用不带标题的命名 colClasses(例如没有 col.names?)

    更新 2016 年 6 月 col names 已添加到 data table 1 9 6 所以问题已经结束 每个人都非常高兴 我想我现在可以将所有 read csv 调用转换为 fread 调用 而不必担心破坏 原问题 使用数据表1 9
  • 将 r 数据框中的列字符串转换为数字

    我有一个数据框 其中有一列字符串 如下所示 mydata lt c 1 356670 35 355030 1 356670 35 355030 1 356620 35 355890 1 356930 35 358660 1 357000 3
  • 合并具有一个共同元素的集合 R

    我有一个这样的列表 lista list lista 1 c 1 2 4 6 8 9 10 11 12 19 32 34 35 36 37 38 lista 2 c 7 8 lista 3 c 13 14 16 26 27 28 29 30
  • 读取并绘制从大文件中读取的数据

    我们有相当大的文件 大约为 1 1 5 GB 主要是日志文件 其中包含易于解析为 csv 的原始数据 随后应该将其绘制成图表以生成一组图形图像 目前 我们正在使用 bash 脚本将原始数据转换为 csv 文件 其中仅包含需要绘制图表的数字
  • 自定义 colorRampPalette 中的颜色条

    我定义了一个 colorRampPalette my colors colorRampPalette c light green yellow orange red 如何为其绘制颜色条 图例 项目 最好仅使用基本包 我正在寻找一个充满该颜色
  • 使用 X11 窗口的 R 脚本仅打开一秒钟

    我正在通过 Linux Mint 16 命令行运行 R 脚本 它包含我想在窗口中显示的箱线图 所以我使用 x11 函数来创建该窗口 这是我的代码 testdata lt data frame sample 1 1000 size 100 r
  • 向图像添加坐标,以用作 R 中的 Leaflet、Shiny 和 Shinydashboard 包中的地图

    我计划使用 Leaflet Shiny 和 Shinydashboard 沿着以下很棒的路线创建一个带有医院 OHS 事件标记的交互式地图交互式地图和直方图模板 http shiny rstudio com gallery superzip
  • 根据另一个向量替换向量中的值

    我想替换向量中的值 x 与另一个向量 y 陷阱 22 方法需要是动态的 以适应向量中不同数量的 级别 x 例如 考虑向量x x lt sample c 1 2 3 4 5 100 replace TRUE gt x 1 2 4 1 1 3
  • R:为什么 kable 不在 for 循环内打印?

    我正在使用 rmarkdown 和 Latex 编写报告 我需要使用打印一组表格knitr kable 但在 for 循环内时不会打印 这是我的代码 title project title author Mr Author date 201
  • 列槽不足

    当尝试为 data table 中的每个变量 108 个变量 创建 12 个滞后时 我收到一条错误 指出列槽不足 此操作应创建大约 1200 个变量或列 Data A as data table Datos A Varnames names
  • 了解用于处理色边距的scale_fill_continuous_divergingx参数输入

    这个问题是我上一个问题的延续here https stackoverflow com questions 58718527 setting midpoint for continuous diverging color scale on a

随机推荐