R选择输入服务器端未正确初始化
在尝试将selectize输入小部件嵌入闪亮的应用程序时,我遇到了以下问题: 使用R选择输入服务器端未正确初始化,r,widget,shiny,server-side,selectize.js,R,Widget,Shiny,Server Side,Selectize.js,在尝试将selectize输入小部件嵌入闪亮的应用程序时,我遇到了以下问题: 使用server=TRUE时,项目列表未初始化为完整的项目列表。只有在搜索框中输入字符后,才会显示项目。这与server=FALSE时的行为相反。在这种情况下,所有项目最初都显示在框中(这是我想要的行为)。我希望使用server=TRUE选项的原因是我希望能够将格式应用于项目,而这在生成项目客户端时是不可能的。下面的示例使用一个selectize输入使用server=TRUE,另一个使用server=FALSE,再现了
server=TRUE
时,项目列表未初始化为完整的项目列表。只有在搜索框中输入字符后,才会显示项目。这与server=FALSE
时的行为相反。在这种情况下,所有项目最初都显示在框中(这是我想要的行为)。我希望使用server=TRUE
选项的原因是我希望能够将格式应用于项目,而这在生成项目客户端时是不可能的。下面的示例使用一个selectize输入使用server=TRUE
,另一个使用server=FALSE
,再现了这种现象。在我看来,这两种情况下的行为应该是相同的
复制问题的示例app.R:
library(shiny)
server <- function(input, output, session) {
updateSelectizeInput(session, 'cars1', server = TRUE, choices = rownames(mtcars))
updateSelectizeInput(session, 'cars2', server = FALSE, choices = rownames(mtcars))
}
ui <- fluidPage(
selectizeInput('cars1', label = "server side", choices = NULL),
selectizeInput('cars2', label = "client side", choices = NULL)
)
shinyApp(ui = ui, server = server)
库(闪亮)
服务器我相信有一个选项可以设置selectize的初始化值。它在选项中作为项目
显示。您必须向它传递一个您想要的值数组,所以您应该能够只传递行名(mtcars)
,它应该可以工作。虽然我从来没有尝试过一个以上的值,所以我不是100%肯定
所以我相信你的命令是
selectizeInput('cars1', label= "server side", choices = NULL, options = list(items = rownames(mtcars))),
然后,其他的线路也是如此。或者,如果这不起作用,请尝试在items数组中硬编码初始值。不太好,我知道,我不知道你有多少初始值,但我相信它会起作用。受科林答案的启发,我找到了一个似乎有效的解决方法,尽管我仍然认为这实际上是一个闪亮的错误。通过添加参数selected=rowsnames(mtcars)
首先选择所有选项,然后再次调用updateSelectizeInput()
,选择第一项,项目列表将填充所有选项/项目。这也适用于multiple=TRUE
(因为我想使用它)
库(闪亮)
服务器此问题一直存在于Shiningv0.12.0()。服务器端selectizeInput()
将首先加载前1000个选项(或者在n<1000
时加载第一个n
选项)。感谢您的回答,但不幸的是,这并不能解决问题。当我添加此选项时,初始selectize下拉菜单仍然为空。此外,我还想将其嵌入到一个应用程序中,因为selectize小部件的内容会根据另一个小部件(selectInput)的值进行更新。很高兴看到您获得了它!我本来打算建议“选择”,但我找不到关于它的确切文档,也不确定它是否正是您所需要的。非常感谢您的修复。R工作室的伙计们做得很棒!
library(shiny)
server <- function(input, output, session) {
updateSelectizeInput(session, 'cars1', server = T, choices = rownames(mtcars), selected = rownames(mtcars))
updateSelectizeInput(session, 'cars1', server = FALSE, selected = rownames(mtcars)[1])
updateSelectizeInput(session, 'cars2', server = FALSE, choices = rownames(mtcars))
}
ui <- fluidPage(
selectizeInput('cars1', label= "server side", choices = NULL, multiple = F),
selectizeInput('cars2', label = "client side", choices = NULL)
)
shinyApp(ui = ui, server = server)