当前位置: 首页 > 知识库问答 >
问题:

case_when突变整数转换问题

毋弘光
2023-03-14

我想知道如何解决case_when中的整数和双向量问题。我需要double vector作为我的numericinput,然而,“case_when”总是给我抛出一个错误,比如“x必须是一个整数向量,而不是一个double vector”。

它只允许我在将“true~0”更改为“true~0L”时输入整数输入

#Load packages
library(shiny)
library(data.table)
library(dplyr, warn.conflicts = FALSE)
library(DT)
#> 
#> Attaching package: 'DT'
#> The following objects are masked from 'package:shiny':
#> 
#>     dataTableOutput, renderDataTable
library(tidyr)


df<-data.frame('provider'="CVS",  'year'=c(2020,2021,2022,2023,2024,2025))


# Define UI for app that draws a histogram ----
ui <- fluidPage(
  
  # App title ----
  titlePanel("Hello Shiny!"),
  
  # Sidebar layout with input and output definitions ----
  sidebarLayout(
    
    # Sidebar panel for inputs ----
    sidebarPanel(
      tabsetPanel(
        tabPanel("Brand Inf",
                 numericInput("b1","Brand 1", 0, min = NA, max = NA),
                 numericInput("b2","Brand 2", 0, min = NA, max = NA),
                 numericInput("b3","Brand 3", 0, min = NA, max = NA)),
                
        tabPanel("GFR",
                 numericInput("p1","GFR 1", 0, min = NA, max = NA),
                 numericInput("p2","GFR 2", 0, min = NA, max = NA),
                 numericInput("p3","GFR 3", 0, min = NA, max = NA))),
      width = 2),
    
    # Main panel for displaying outputs ----
    mainPanel(
      DT::dataTableOutput("table"))
  ))


# Define server logic required to draw a histogram ----
server <- function(input, output) {
  
  DF<-function(var1, var2, var3,var4, var5, var6){
    var1<-enexpr(var1)
    var2<-enexpr(var2)
    var3<-enexpr(var3)
    var4<-enexpr(var4)
    var5<-enexpr(var5)
    var6<-enexpr(var6)
    
    df<-df %>% rowwise %>% 
      mutate(inflation= case_when(year== 2020 ~ !!var1, year == 2021 ~ !!var2, year == 2022 ~ !!var3, TRUE ~ 0),
             GFR=case_when(year== 2020 ~ !!var4, year == 2021 ~ !!var5, year == 2022 ~ !!var6, TRUE ~ 0))
  }
  
  data<-reactive({
    
    DF(input,input$b1,input$b2,input$b3,input$p1,input$p2,input$p3) 
    
  })
  
  #plan awp table
  output$table <- DT::renderDataTable({
    DATA <- data()
  })
  
}

shinyApp(ui, server)

DF(0.05,0.05,0.05,0.01,0.01,0.01)
#> Error in DF(0.05, 0.05, 0.05, 0.01, 0.01, 0.01): could not find function "DF"
DF
#> Error in eval(expr, envir, enclos): object 'DF' not found

由reprex包(v0.3.0)于2020-08-12创建

共有1个答案

涂浩皛
2023-03-14

试试这个

#Load packages
library(shiny)
library(data.table)
library(dplyr, warn.conflicts = FALSE)
library(DT)
library(tidyr)

df<-data.frame(provider="CVS",  year=c(2020,2021,2022,2023,2024,2025))

# Define UI for app that draws a histogram ----
ui <- fluidPage(
  
  # App title ----
  titlePanel("Hello Shiny!"),
  
  # Sidebar layout with input and output definitions ----
  sidebarLayout(
    
    # Sidebar panel for inputs ----
    sidebarPanel(width=2,
     
        h3("Brand Inf"),
        numericInput("b1","Brand 1", 0, min = NA, max = NA),
        numericInput("b2","Brand 2", 0, min = NA, max = NA),
        numericInput("b3","Brand 3", 0, min = NA, max = NA),
        
        h3("GFR"),
        numericInput("p1","GFR 1", 0, min = NA, max = NA),
        numericInput("p2","GFR 2", 0, min = NA, max = NA),
        numericInput("p3","GFR 3", 0, min = NA, max = NA)        
      
    ),
    
    # Main panel for displaying outputs ----
    mainPanel(
      DTOutput("table"))
  )
)


# Define server logic required to draw a histogram ----
server <- function(input, output) {
  
  DF<-function(var1, var2, var3,var4, var5, var6){
    
    df1<-df %>% rowwise %>% 
      transform(inflation= case_when(year== 2020 ~ var1, year == 2021 ~ var2, year == 2022 ~ var3, TRUE ~ 0),
             GFR=case_when(year== 2020 ~ var4, year == 2021 ~ var5, year == 2022 ~ var6, TRUE ~ 0))
      
    return(df1)
  }
  
  data1<-reactive({
    
    DF(as.numeric(input$b1),as.numeric(input$b2),as.numeric(input$b3),as.numeric(input$p1),as.numeric(input$p2),as.numeric(input$p3)) 
    
  })
  
  #plan awp table
  output$table <- renderDT({
    data1()
  })
  
}

shinyApp(ui, server)
 类似资料:
  • 我有这样的调查数据。唯一的回答是“na”或“yes”。 我不得不对数据应用以下逻辑: null null 任何建议都非常感谢!我想我可能得用一个循环,但我不知道怎么用。如果我转换为数值并将所有4列求和,我可以使用类似…?

  • 我觉得应该有一种有效的方法使用和使用来修改新列,但不能使其工作。 我知道在中使用“有点试验性”(就像在本文中一样),但如果有任何建议,我将不胜感激。 不起作用:

  • 问题内容: 我正在为我的游戏创建高分功能,但无法正常工作 这是我的方法: 它所做的是从.txt文件中读取最新的高分,并检查玩家得分是否更高(如果是),它将新的高分写入文件 我通过使用then并在第10行将字符串从int转换为int,作为测试,但是我抛出一个错误,说即使我转换为int并转换了self ,也无法添加str和int 。得分,因此出于某种原因其中一项转换无效 问题答案: 返回一个整数,但是

  • 问题内容: 如何将(大字节序)可变大小的二进制字节数组转换为(无符号)整数/长整数?例如,代表4404 现在,我正在使用 它虽然很小,但有点可读,但可能效率不高。有没有更好(更明显)的方法? 问题答案: 传统上,Python对于“大尾数C布局中的数字”用处不大,而对于C来说则用不了太多。(如果要处理2字节,4字节或8字节的数字,那么答案就是) 但是足够多的人厌倦了没有一种明显的方法可以做到这一点,

  • 主要内容:二进制表示小数,浮点数表示方法,转换函数,实例,实例关键词 :定点数, 浮点数, $realtobits, $bitstoreal 本节主要介绍实数与整数间相互转换的函数:$realtobits, $bitstoreal,同时说明下 real 型 (同 C 语言中的 double float)变量是怎么用多位宽的二进制码表示的。 二进制表示小数 二进制表示小数 十进制整数用二进制来表示时,需要进行数据除以 2 然后取余的操作。 小数部分用二进制来表

  • 问题内容: 我想知道是否有任何方法可以将Integer类型的变量转换为BigInteger。我尝试类型转换Integer变量,但出现一个错误消息,指出不可转换的类型。 问题答案: 您想要的方法是BigInteger#valueOf(long val) 。 例如, 首先创建String是不必要的,也是不希望的。