如果我在這種情況下運行我的代碼,它會起作用,因為輸入尚未通過。
該代碼只是將資料框從 data.csv. 這個資料框有很多以下列 code , vaccinationsTotal , peopleFirstTotal , peopleFullTotal ,peopleBoosterTotal
而我想要做的只是通過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 一個值,即vaccinationsTotal
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")
在這種情況下如何傳遞輸入變數?我花了幾天時間嘗試。
uj5u.com熱心網友回復:
您在代碼中犯了 3 個錯誤。
你正在
input$sel總結。您需要傳遞的是`get(input$sel)。另一件事是當您在 R 中匯總資料時,它使用您正在匯總的資料的列名。所以,你的情況,而繪制資料,您需要將相同的列名傳遞給
y-axis的ggplot。
或者,您可以在匯總列時重命名該列。像這樣:
summarise(output = get(input$sel))
- 現在,您只需要將傳遞的變數名稱更改為在
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函式內部對其進行調整。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/384667.html
