gpt4 book ai didi

r - 使用用户选择的输入作为 Shiny 的函数参数?

转载 作者:行者123 更新时间:2023-12-04 09:39:06 25 4
gpt4 key购买 nike

假设我在 Shiny 的 ui.R 中有一个输入:

selectInput("choice","Select Values",choices=c('a','b','c',FALSE),
selected="FALSE")

我想将此输入用作 server.R 中函数的参数。此参数的默认值为 FALSE,但可以接受字符值。我想设置它,例如,如果用户选择 'a',值 'a' 将传递给函数中的参数,并且如果用户选择 'FALSE',则 FALSE 的默认值将传递给参数。

我尝试这样做的方式是:

choice <- ifelse(input$choice=='FALSE',FALSE,input$choice)

然后在函数中使用它:

sample_func(param=choice)

但是,这给了我一个错误“param has the wrong format”。该错误是 choice 不是字符值或 FALSE 的结果。

这可能是什么原因?

最佳答案

第一个问题是:


choice <- ifelse(input$choice=='FALSE',FALSE,input$choice)

这必须在响应式(Reactive)上下文中编写,因为它取决于用户输入。所以你必须包装你的 ifelse(...)参与reactive() .当然我不知道你是否已经这样做了,因为你没有发布整个代码,我假设你只是在没有包装 reactive() 的情况下编写了代码.

关于同一行的另一件事并不是真正的错误,而是一种习惯。使用 choice 是个坏主意再次。关键是,它已经存在于 input$choice 中。现在您将其分配给同名的 react 值。如果您的代码复杂而冗长,那可能会造成混淆。

所以,我会在下面建议这样的事情。
fun_choice <- reactive(ifelse(input$choice=='FALSE',FALSE,input$choice))

下一个问题在:


sample_func(param=fun_choice) ## I changed the argument name to fun_choice

如果你治疗了fun_choice作为 react ,应该用 fun_choice() 代替.此外,这意味着这个函数结果也应该在 react 上下文中。所以这一行应该变成:


variable_name <- reactive( sample_func(param=fun_choice()) )

当然可以用observe包裹起来如果您想要的是副作用和其他一些东西而不是函数返回。

希望这对您有所帮助。

最后一件事,如果fun_choice在其他地方没有其他用途,只是传递给 sample_func , 我建议你把它们放在一个 reactive() .即

variable_name <- reactive({
fun_choice <- ifelse(input$choice == 'FALSE', FALSE, input$choice)
sample_func(param = fun_choice)
})

注意在这个方法中,fun_choice , 在同一个 reactive() , 不必表示为 fun_choice() , 而只是 fun_choice .

关于r - 使用用户选择的输入作为 Shiny 的函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30540535/

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