`filter()` 输入 `..1` 出现问题。与闪亮的R

2024-06-28

我正在尝试构建一个闪亮的应用程序,根据用户条目过滤数据帧,但是,我正在努力使用我创建的函数来执行此任务,错误Problem with 'filter()' input '..1'. x Input '..1' must be of size 9 or 1, not size 0.不断出现。 我发现了类似的问题here https://stackoverflow.com/questions/67628985/shiny-error-in-problem-with-filter-input-1但答案没有帮助。

这是我的代码。这里还有xlsx https://drive.google.com/file/d/1JibCEtpP5sPb-yqTMw2W_vKHyJQnDpy0/view?usp=sharing and csv https://drive.google.com/file/d/1Lo2VuEU5oWj46VeJaVIhppuZQpThA64L/view?usp=sharing包含示例数据的文件。

我非常感谢你的帮助

library(shiny)
library(dplyr)
library(shinythemes)
library(shinydashboard)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  theme = shinytheme("flatly"),
  tabsetPanel(
    id = "tabs",
    tabPanel("Portafolio",
             sidebarLayout(
               sidebarPanel(
                 titlePanel("Seleccione las variables deseadas"),
                 uiOutput('fondo'),
                 uiOutput('reg'),
                 uiOutput('seguro'),
                 uiOutput('prod_sap'),
                 hr(),
                 actionButton("addbutton","Añadir")
               ),
               mainPanel(
                 titlePanel("Vista previa del portafolio"),
                 tableOutput('courseTable'),
                 actionButton(inputId = "continue", label = "Cotizar")
               )
             )
    ),
    tabPanel("Cotización",
             tableOutput('envio'))
  )
  )


server <- function(input, output, session) {
  fondo_edo <- reactive ({
    read.csv("E:/Input Fondo-Edo-Reg_example.csv") 
  })
  
  output$fondo <- renderUI({
    times <- input$addbutton
    fondos_todos <- as.vector(unique(fondo_edo()$FONDO))
    div(id= letters[(times %% length(letters)) + 1],
        selectInput("fondo_selec","Fondo:", choices=fondos_todos,selectize = T))    
  })
  
  fondo_edo1 <- reactive({
    subset(fondo_edo(), FONDO %in% input$fondo_selec)
  })
  
  output$reg <- renderUI({
    reg_todos <- as.vector( unique(fondo_edo1()$REGIÓN) )
    selectInput("reg_selec","Región:", choices=reg_todos, selectize = F)    
  })

  output$seguro <- renderUI({
    times <- input$addbutton
    div(id=letters[(times %% length(letters))+1],
        selectInput("seguro_selec","Seguro agricultura protegida:", choices=c("","Cosecha_Esp", "Inversión", "Planta"), selectize = F))    
  })
  
  output$prod_sap <- renderUI({
    times <- input$addbutton
    div(id=letters[(times %% length(letters))+1],
        conditionalPanel("input.seguro_selec == 'Inversión'",
                         selectInput("prod_sap_selec","Nombre producto SAP:", choices= "Tradicional")),
        conditionalPanel("input.seguro_selec != 'Inversión'",
                         selectInput("prod_sap_selec2","Nombre producto SAP:",choices = c("","Establecimiento", "Mantenimiento", "Producción"), selectize = F)))
  })

  values <- reactiveValues()
  values$df <- data.frame("Fondo" = numeric(0), "Región"= numeric(0), "Tipo de práctica"= numeric(0),
                          "Seguro agricultura protegida"= numeric(0))
  
  newEntry <- observe({
    if(input$addbutton > 0) {
      
      newLine <- isolate(c(input$fondo_selec, input$reg_selec,
                           "RIEGO", 
                           ifelse(input$seguro_selec=="Planta", paste0(input$seguro_selec,"/",input$prod_sap_selec2),
                                  input$seguro_selec)))
      isolate(values$df[nrow(values$df) + 1,] <-newLine)
    }
  })
  
  output$courseTable <- renderTable({values$df})
  
  observeEvent(input$continue, {
    updateTabsetPanel(session = session, inputId = "tabs", selected = "Cotización")
  })
  
  cotizacion <- reactive({
    isolate(busca_folios(fondo_edo(),values$df$Fondo, values$df$Región,
                         values$df$Seguro.agricultura.protegida))
  })
  output$envio <- renderTable({cotizacion()})
  
  # cotizacion <- reactiveValues()
  # cotizacion$df <-  busca_folios(fondo_edo(),values$df$Fondo, values$df$Región,
  #                                values$df$Sistema.de.producción, values$df$Seguro.agricultura.protegida)
  # 
  # output$envio <- renderTable({cotizacion$df})
}


runApp(shinyApp(ui,server))


#### Funciones ####

busca_folios <- function(tabla_fondos, fondo, reg, cultivo, seguro){
  historico_folios <- readxl::read_xlsx("E:/historico_example.xlsx")
  
  fn <- tabla_fondos[which(tabla_fondos$FONDO == fondo),]$`CLAVE FONDO`
  fond <- ifelse(nchar(fn)==1,paste0("000",fn),ifelse(nchar(fn)==2, paste0("00",fn),
                                                      ifelse(nchar(fn)==3, paste0("0",fn),fn)))
  rg <-tabla_fondos[which(tabla_fondos$REGIÓN == reg),]$CVE_REGION
  region <- ifelse(nchar(rg)==1, paste0("00",rg),ifelse(nchar(rg)==2,paste0("0",rg),rg))
  
  buscada <<- historico_folios %>% 
    dplyr::filter(Fondo==fond,
                  Región == region, Subramo == seguro)
}

您的代码存在几个问题:

  1. 您检查Fondo==fond。然而,这个论点被称为fondo.
  2. 您的函数有四个参数,而您只用三个参数调用它:busca_folios(fondo_edo(),values$df$Fondo, values$df$Región, values$df$Seguro.agricultura.protegida)。因此有这样的论点segura不见了
  3. 至少在我的机器上Región == region给了我一个错误,我通过放置来修复Región里面的反引号“`”
  4. 在过滤器内部,您通过以下方式检查是否相等==即使在解决其他问题之后,这也是您收到错误的原因。相反,由%in%

固定函数如下所示:

busca_folios <- function(tabla_fondos, fondo, reg, cultivo, seguro){
  historico_folios <- readxl::read_xlsx("historico_example.xlsx")
  
  fn <- tabla_fondos[which(tabla_fondos$FONDO == fondo),]$`CLAVE FONDO`
  fond <- ifelse(nchar(fn)==1,paste0("000",fn),ifelse(nchar(fn)==2, paste0("00",fn),
                                                      ifelse(nchar(fn)==3, paste0("0",fn),fn)))
  rg <-tabla_fondos[which(tabla_fondos$REGIÓN == reg),]$CVE_REGION
  region <- ifelse(nchar(rg)==1, paste0("00",rg),ifelse(nchar(rg)==2,paste0("0",rg),rg))
  
  buscada <<- historico_folios %>% 
    dplyr::filter(Fondo %in% fondo,
                  Región %in% region, Subramo %in% seguro)
}

固定调用如下:

cotizacion <- reactive({
    isolate(busca_folios(fondo_edo(),values$df$Fondo, values$df$Región,
                         seguro = values$df$Seguro.agricultura.protegida))
  })

解决这些问题后的结果如下所示:

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

`filter()` 输入 `..1` 出现问题。与闪亮的R 的相关文章

随机推荐

  • Prisma 中带有时区列的时间戳

    我正在评估 Prisma 我是一个十足的菜鸟 我正在使用 Postgresql 我有以下模型定义 model Sth id Int default autoincrement id createdAt DateTime default no
  • 如何在不使用验证码组件的情况下防止批量漏洞扫描?

    如何防止表单被 XSSME SQLinjectMe 这两个是免费的 Firefox 附加组件 Accunetix Web Scanner 等大型漏洞扫描程序扫描 这些 网络漏洞扫描器 可以捕获包含所有字段的表单副本 并在几分钟内发送数千个测
  • 如何在线程 (->) 宏中输入提示?

    我有一些 Clojure 代码试图通过几层 Java 代码进行互操作 在本例中 java nio Path http docs oracle com javase 7 docs api index html java nio file Pa
  • PHP 彗星。怎样才能做得更好呢?

    我有一个简单的彗星聊天 JavaScript 通过长轮询发送 ajax 请求 当服务器在数据库中发现新消息时 它会应答并给出 JSON 接下来 JavaScript 再次发送请求 JavaScript function cometConne
  • JQ:排除指定的嵌入键

    从以下输入 key1 key x 1 key z 2 key2 key x 2 key z 3 我想排除所有具有该名称的键 key x 所以结果应该是 key1 key z 2 key2 key z 3 您可以使用del https ste
  • WinForm 中的 OpenID?

    有谁知道在 WinForm net 2 0 和 C 中使用或不使用 RPX 的 OpenID 的最佳 或任何 教程 由于 WinForms 是一个客户端接口 并且 OpenID 要求您实际运行 Web 服务器 因此您可能只想在某个地方设置一
  • AWS CodeBuild 失败 CLIENT_ERROR:主要源和源版本授权失败

    我已经验证了 GitHub 帐户 我的 AWS CodePipeline 失败并出现以下错误 CLIENT ERROR 主要源和源版本的授权失败 CodeBuild 角色需要访问和使用 CodePipeline 连接的权限 https do
  • 对象不是声明类的实例 -Hibernate

    我是 HIbernate 的新手 正在练习一些关于一对多映射的示例 但我不明白为什么它会抛出错误 1 员工 java package com common pojo import java util Set public class Emp
  • 引用作为 std::map 中的键

    假设一些数据结构 typedef struct std string s int i data 如果我使用该字段data s添加实例时作为键data在类型地图中std map
  • AbstractUser Django 完整示例

    我是 Django 新手 我已经尝试了几个星期 但找不到解决这个问题的方法 我想存储其他信息 例如用户手机号码 银行名称 银行账户 并希望在用户注册时存储手机号码 并希望用户使用 手机号码和密码 或 电子邮件和密码 登录 这是我的 User
  • 如何使用输入字段过滤 Angular 4 中 *ngFor 循环内的项目

    我想根据字符串中是否存在特定子字符串这一事实来过滤 Angular 4 中 ngFor 循环中的项目 For Ex agents id 11 name Agent 0 email email protected cdn cgi l emai
  • VS Code Python 格式:使用 autopep8 / yapf / black 更改最大行长度

    I am experimenting with different python formatters and would like to increase the max line length Ideally without editi
  • WCF 数据服务 (OData) 与 ASP.NET Web API

    我正在设计一个分布式应用程序 其中包含 RESTful 服务和各种客户端 Silverlight iOS Windows Phone 7 等 现在 我正在确定应该使用哪种技术来实现我的服务 WCF 数据服务 OData 或随 ASP NET
  • 从 Visual Studio 锁定窗格的位置

    好吧 如果您像我一样 您可能不小心拖动了 Visual Studio 中众多窗格中的一个 并花费了一些乏味的时间让一切恢复正常 有什么方法可以锁定 Visual Studio 中的所有窗格 以便它们不能被拖动并放置到其他地方吗 当您按照您喜
  • iOS:将 iOS 应用程序屏幕转换为网络数据包

    我正在开发一个 iOS 应用程序 我需要将转换为网络数据包的 iOS 应用程序屏幕共享到另一个服务器目标 我可以使用套接字编程来发送和接收网络数据包 但是 我想知道 如何将我的 iOS 应用程序本机屏幕 视图 转换为数据包 例如 在Wind
  • 在 Quill 上从 Delta 获取 HTML

    我正在尝试从 Quill 上的 delta 获取 HTML 代码 这是我的代码
  • 使用 asyncio 的异步信号

    我的模型后处理正在使用post save signal from django core signals import request finished from django dispatch import receiver from m
  • 了解 glPushMatrix() 和 glPopMatrix()

    我有以下代码 void drawObj1 glPushMatrix glTranslatef rBaseInitPos rBaseDim 0 2 rBaseDim 1 baseIncrement rBaseDim 1 2 rBaseDim
  • 在 lxml 中查找具有未知命名空间的元素

    我有一个包含多个级别的 XML 每个级别都可能附加有命名空间 我想要find我知道其名称但不知道其名称空间的特定元素 例如 my file xml
  • `filter()` 输入 `..1` 出现问题。与闪亮的R

    我正在尝试构建一个闪亮的应用程序 根据用户条目过滤数据帧 但是 我正在努力使用我创建的函数来执行此任务 错误Problem with filter input 1 x Input 1 must be of size 9 or 1 not s