在这种情况下如何在 R Studio 中传递输入值?

how to pass an input value in R Studio in this case?

如果我 运行 我的代码在这种情况下,它可以工作,知道输入尚未通过。 该代码只是从 data.csv 中生成数据框。 此数据框有许多以下列 code vaccinationsTotal peopleFirstTotal peopleFullTotal peopleBoosterTotal 我想做的只是 select 通过 input$sel

的专栏
library(shiny)
library(dplyr)
library(ggplot2)
library(magrittr)


library(readr)
dataf <- read_csv("data.csv")


server <- function(input, output, session) {
 #Summarize Data and then Plot 
data <- reactive({
    req(input$sel)
     df <- dataf %>%  group_by(code) %>% summarise(vaccinationsTotal)
    print(df)
  })
  
  #Plot 
  output$plot <- renderPlot({  
   
    g <- ggplot(data(), aes( y = vaccinationsTotal  ,x = code) ) 
    g + geom_bar( stat = "sum")
  
  })
}

ui <- basicPage(
  
  selectInput(inputId = "sel",
              label = "eine möglichkeit auswählen",
             
               list("vaccinationsTotal","peopleFirstTotal","peopleFullTotal","peopleBoosterTotal")),
 
   plotOutput("plot")
)

shinyApp(ui = ui, server = server)

如果我 运行 我的代码在将 summarise(vaccinationsTotal) 替换为 summarise(input$sel) 后,它会显示 ylim 只有一个值,即 vaccinesTotal


 df <- dataf %>%  group_by(code) %>% summarise(vaccinationsTotal)
    print(df)
  })
  
  #Plot 
  output$plot <- renderPlot({  
   
    g <- ggplot(data(), aes( y = vaccinationsTotal  ,x = code) ) 
    g + geom_bar( stat = "sum")
   

在这种情况下如何传递输入变量? 我花了几天时间尝试。

您在代码中犯了 3 个错误。

  1. 您正在通过input$sel进行总结。你需要传递的是get(input$sel).

  2. 另一件事是当您在 R 中汇总数据时,它使用您正在汇总的数据的列名。因此,在您的情况下,在绘制数据时,您需要将相同的列名传递给 ggploty-axis

或者您可以在汇总时重命名该列。像这样:

summarise(output = get(input$sel))

  1. 现在,您只需将传递的变量名称更改为您在 summarise 函数中重命名时使用的名称变量名称。
server <- function(input, output, session) {
  #Summarize Data and then Plot 
  data <- reactive({
    req(input$sel)
    df <- dataf %>%  
      group_by(code) %>% 
      summarise(output = get(input$sel))
    print(df)
  })
  
  #Plot 
  output$plot <- renderPlot({  
    g <- ggplot(data(), aes(y = output, x = code) ) 
    g + geom_bar( stat = "sum")
    
  })
}

请注意,这样做会将 output 显示为您的 y-axis 标签。尽管您可以在 ggplot 函数中对其进行调整。