【发布时间】:2021-06-14 00:44:59
【问题描述】:
我在运行闪亮的应用程序时遇到了这个烦人的错误。一、代码:
df2 <- c(2012,2013,2014,2015)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
sliderInput("year_range",
"Select Years:",
min = 2012,
max = 2019,
value = c(2012,2019),
ticks = FALSE
)
)
mainPanel(
# stuff goes in here
)
)
)
server <- function(input, output) {
# put years into variables
show_years_l <- renderText(input$year_range[1])
show_years_h <- renderText(input$year_range[2])
# update list based on years selected
trim_years <- df2 %>% filter(between(V1, show_years_l, show_years_h))
}
shinyApp(ui = ui, server = server)
我已经阅读了这些链接,但无法在逻辑上将其应用于我的情况:
R shiny cannot coerce type 'closure' to vector of type 'double'
R error: cannot coerce type 'closure' to vector of type 'double'
我尝试将 as.numeric 用于 show_years_l 和 show_years_h 值,但我得到了同样的错误。
filter(between(V1, as.numeric(show_years_l), as.numeric(show_years_h)))
我也尝试在过滤器语句中将值键入为数字,即 2013、2014,但显示相同的错误。
filter(between(V1, 2013, 2014))
提前致谢。
【问题讨论】:
-
你为什么在这里使用
renderText?您似乎没有渲染任何文本。trim_years <- df2 %>% filter(between(V1, input$year_range[1], input$year_range[2]))怎么样。但是,trim_years仍然需要在反应式环境中,而目前不是。你有没有学习过闪亮的教程或任何东西?一个很好的起点是这里的视频:rstudio.com/resources/shiny-dev-con-2016。特别是对反应性的介绍。 -
运行
ui代码返回argument "mainPanel" is missing, with no default。 -
感谢@MrFlick,不幸的是,这会返回相同的错误。我确实浏览了教程,只是一次添加点点滴滴。我无法轻松找到有关我想要实现的目标的信息。
-
@RonakShah 我故意将 mainPanel 排除在外,因为我认为它无关紧要,这是我的错误,我将修复示例代码。
-
@binga30 它返回完全相同的错误?确保删除
show_years_l和show_years_h值,因为我们直接在过滤器中使用输入。但是你到底想做什么trim_years?您的代码中没有任何内容。我无法想象哪个教程告诉您在 UI 中没有匹配的textOutput()时使用renderText()。您不会使用来自 render() 函数的内容作为计算的输入。也许你在想reactiveVal()这似乎很不完整,不清楚你到底想做什么。