Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R选择输入服务器端未正确初始化_R_Widget_Shiny_Server Side_Selectize.js - Fatal编程技术网

R选择输入服务器端未正确初始化

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,再现了

在尝试将selectize输入小部件嵌入闪亮的应用程序时,我遇到了以下问题:

使用
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)