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 循环以获取用户输入,然后在单击按钮后继续?
从 SelectInput (R Shiny) 中的分组选项列表中获取组标签
Shiny App - 从上传的 CSV 生成和下载 PPTX 幻灯片