Shiny App:从上传的文件中获取输入选择

Posted

技术标签:

【中文标题】Shiny App:从上传的文件中获取输入选择【英文标题】:Shiny App : getting input choices from an uploaded file 【发布时间】:2014-10-07 02:14:09 【问题描述】:

我正在尝试使用 Shiny 从文件中获取数据并使用此数据填充列表。

这个过程非常标准。在 server.R 文件上,我通过读取 csv 文件得到一个名为“list”的向量。我希望能够使用 selectInput() 函数从此向量中选择值。所以我放了一个观察循环来检查文件是否上传,如果正确,则创建list

observe(
  inFile<-input$DATA
  if(!is.null(inFile))
    data = read.table(inFile$datapath, header=T,sep=";")
    list=unique(data$SLE)
  else
    list=NULL
  
)

我的selectInput()是这样的:

output$SLE = renderUI( selectInput('SLE1', label='Choose the item :', levels(list)) )

如果我把selectinput()放在观察循环中,选择框效果很好,只是每次执行观察循环时,选择框都会重置。所以,这不是一个解决方案。

如果我将选择框排除在观察循环之外,list 会保留默认值,即使数据文件已加载。

我尝试将list 设置为反应值,但没有成功。如何设置list

【问题讨论】:

不应该是list 而不是sle.list 吗? 是的,你是对的,我编辑了它。 我使用这篇帖子link 来找到解决方案。我真的不知道为什么它现在工作以及为什么它以前不工作,我只是在观察循环中将 out$SLE 替换为 updateSelectInput(session,'SLE',choices=levels(list)) 。 【参考方案1】:

您可以在 UI.R 本身的条件面板中使用选择输入,并且

使用函数代替“choices=”来检索数据框作为选择列表。

一个例子如下:

在ui.R中:

selectInput("id", "Select Employee:", get.Employee()) 

所需功能:

get.Customers <- function(input)
    # YOU CAN ENTER YOUR CODE IN HERE
    df_input <- input$nr
    return(df_input)

【讨论】:

以上是关于Shiny App:从上传的文件中获取输入选择的主要内容,如果未能解决你的问题,请参考以下文章

在 Shiny 应用程序中,如何暂停 for 循环以获取用户输入,然后在单击按钮后继续?

如何从 R Shiny 的选择菜单中拆分选定的列?

从 SelectInput (R Shiny) 中的分组选项列表中获取组标签

Shiny App - 从上传的 CSV 生成和下载 PPTX 幻灯片

Shiny App中的文件夹选择(本地和服务器上)以读取文件并保存结果

如何在 Shiny 中创建一个弹出窗口来警告用户选择一种类型的文件扩展名?