在这种情况下如何在 R Studio 中传递输入值?
Posted
技术标签:
【中文标题】在这种情况下如何在 R Studio 中传递输入值?【英文标题】:how to pass an input value in R Studio in this case? 【发布时间】:2022-01-20 06:58:30 【问题描述】:如果我在这种情况下运行我的代码,它可以工作,知道输入尚未通过。
该代码只是从data.csv
中生成数据框。
这个 datframe 有许多以下列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
仅具有一个值,即接种总数
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")
在这种情况下如何传递输入变量? 我花了几天时间尝试。
【问题讨论】:
请添加数据重现问题。 @VishalA。我也想到了,但是虚拟数据也可以工作,但是如果你能用数据弄清楚,那么这里就是数据文件。 impfdashboard.de/static/data/germany_vaccinations_by_state.tsv 【参考方案1】:您在代码中犯了 3 个错误。
您通过input$sel
进行总结。你需要传递的是`get(input$sel)。
另一件事是当您在 R 中汇总数据时,它使用您正在汇总的数据的列名。因此,在您的情况下,在绘制数据时,您需要将相同的列名传递给ggplot
的y-axis
。
或者您可以在汇总时重命名该列。像这样:
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
函数中对其进行调整。
【讨论】:
以上是关于在这种情况下如何在 R Studio 中传递输入值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用角度的ng的情况下将输入值从父组件传递给子组件?