gpt4 book ai didi

r - 为什么ShinyApps中的seq()函数不起作用?

转载 作者:行者123 更新时间:2023-12-03 08:07:36 25 4
gpt4 key购买 nike

我试图在Apps中使用seq()函数创建ShinyApp。

header <- dashboardHeader(title = 'Testing' ,titleWidth = 300)
sidebar <- dashboardSidebar(uiOutput("sidebarpanel"), width = 300)
body <- dashboardBody(uiOutput("body"))
uix <- dashboardPage(header, sidebar, body)

serverx <- function(input, output, session){

output$sidebarpanel <- renderUI({
div(
sidebarMenu(id="tabs",
menuItem("Tes 1", tabName = "tes1", icon = icon("dashboard"), selected = TRUE)
)
)
})

output$body <- renderUI({
tabItems(tabItem(tabName = "tes1",
fluidRow(column(2, textInput("s1", "From :", value = 1))
,column(2, textInput("s2", "To", value = 7))
),
textOutput("result")
)
)
})

segment_low <- reactiveValues(ba=NULL)
segment_high <- reactiveValues(ba=NULL)
results <- reactiveValues(ba=NULL)

toListen <- reactive({
list(input$s1, input$s2)
})

observeEvent(toListen(),{
segment_low$ba <- input$s1 %>% as.numeric()
segment_high$ba <- input$s2 %>% as.numeric()
})

observe({
results$ba <- seq(segment_low$ba,segment_high$ba, 1)
})

output$result <- renderText({
results$ba
})

}

shinyApp(uix, serverx)


用这种语法,我将创建一个名为 results$ba的变量,因为我想在下一次升级该值。但是结果是一个错误:
Warning: Error in seq.default: 'from' must be of length 1
[No stack trace available]

有人可以帮我解决这个问题吗?由于如果我将reactValueValues放入 seq()函数,则只会发生此错误,因此当我输入静态输入(例如 seq(2,5,1))时,它将不会返回错误。而且我已经将每个输入的初始 value都放在 textInput()函数中。

Kindle需要您的帮助,开发人员!
非常感谢。

最佳答案

问题在于您正在服务器端呈现s1s2输入。因此,服务器在开始时将它们呈现为NULL,并且在获得seq值时,您的NULL函数会出错。

最简单的方法是添加一个req函数,以防止您的代码求值,除非它得到一些非NULL值。

    observe({
req(segment_low$ba, segment_high$ba)
results$ba <- seq(segment_low$ba,segment_high$ba, 1)
})

基本上,由于您使用的是observed(非常渴望),因此您要告诉 seq函数立即进行评估。通过使用 req函数,您可以阻止评估链发生,除非segment_low $ ba和segment_high $ ba具有非NULL值。

关于r - 为什么ShinyApps中的seq()函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61571460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com