R根据输入文件更新输入
我正在尝试制作一个闪亮的应用程序,将user.tsv文件作为输入, 查看一个定义的列以确定时间范围,然后让用户从该时间范围中选择子集 我能够加载在用户文件中,找到文件中的最小和最大日期 我认为可以使用此信息在R根据输入文件更新输入,r,date,range,shiny,R,Date,Range,Shiny,我正在尝试制作一个闪亮的应用程序,将user.tsv文件作为输入, 查看一个定义的列以确定时间范围,然后让用户从该时间范围中选择子集 我能够加载在用户文件中,找到文件中的最小和最大日期 我认为可以使用此信息在dateRangeInput()中设置最小/最大值和开始/结束值 然而,即使在加载文件输入后,字段也是空白的。我不能在global.R或其他任何地方设置这些日期,因为每个上传的文件都会更改这些日期 用户文件简化示例: V1 V2 V3 7753 7 Jan 14 09:50:
dateRangeInput()
中设置最小/最大值和开始/结束值
然而,即使在加载文件输入后,字段也是空白的。我不能在global.R或其他任何地方设置这些日期,因为每个上传的文件都会更改这些日期
用户文件简化示例:
V1 V2 V3
7753 7 Jan 14 09:50:00
7754 7 Jan 14 09:55:00
8366 9 Jan 14 12:55:00
8471 9 Jan 14 21:40:00
8472 9 Jan 14 21:45:00
8552 10 Jan 14 04:25:00
8553 10 Jan 14 04:30:00
(真实版有更多的栏目,但这在这里并不重要)
server.R(请原谅获取最小值/最大值的方法可能过于复杂,我将使用min()
和max()
下次:):
非常感谢你的任何提示 由于
updatedTerangeInput
只能更新选定的值和标签(ref:),因此可以使用renderUI
解决此问题:
ui.R
library(shiny)
shinyUI(
fluidPage(
fileInput("inFile", "Upload monitor file:"),
uiOutput("dates")
)
)
library(shiny)
lct <- Sys.getlocale("LC_TIME")
Sys.setlocale("LC_TIME", "C")
options(shiny.maxRequestSize = 30 * 1024 ^ 2)
shinyServer(function(input, output) {
myData <- reactive({
validate(
need(input$inFile, "Select a file to load")
)
inF <- input$inFile
read.delim(inF$datapath, header = FALSE)
})
output$dates <- renderUI({
dates <- as.Date(myData()$V2, format = "%d %b %y")
minval <- min(dates)
maxval <- max(dates)
dateRangeInput('expDateRange', label = "Choose experiment time-frame:",
start = minval, end = maxval,
min = minval, max = maxval,
separator = " - ", format = "yyyy-mm-dd",
language = 'cz', weekstart = 1
)
})
})
server.R
library(shiny)
shinyUI(
fluidPage(
fileInput("inFile", "Upload monitor file:"),
uiOutput("dates")
)
)
library(shiny)
lct <- Sys.getlocale("LC_TIME")
Sys.setlocale("LC_TIME", "C")
options(shiny.maxRequestSize = 30 * 1024 ^ 2)
shinyServer(function(input, output) {
myData <- reactive({
validate(
need(input$inFile, "Select a file to load")
)
inF <- input$inFile
read.delim(inF$datapath, header = FALSE)
})
output$dates <- renderUI({
dates <- as.Date(myData()$V2, format = "%d %b %y")
minval <- min(dates)
maxval <- max(dates)
dateRangeInput('expDateRange', label = "Choose experiment time-frame:",
start = minval, end = maxval,
min = minval, max = maxval,
separator = " - ", format = "yyyy-mm-dd",
language = 'cz', weekstart = 1
)
})
})
库(闪亮)
lct这正是我需要的!谢谢你的回答!因此,如果我正确地得到它,我需要根据该文件反应性地创建UI?现在有道理了。再次感谢你@关于文件内容的jprov,是的。