我正在尝试构建一个反应灵敏的应用程序,让最终用户上传一个 csv 文件并在上传的文件上训练我的模型。上传的文件可能包含多个目标变量,我希望我可以为用户提供 selectinput 选项,以便模型针对选定的目标变量运行。到目前为止,我已经能够提供上传文件和读取数据以运行模型的选项。但是,我无法弄清楚如何根据用户输入分配目标变量。这就是我在代码方面的距离
用户界面逻辑
sidebar <- dashboardSidebar(
sidebarMenu(
menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
menuItem("Visit-us", icon = icon("send",lib='glyphicon'),
href = "abc.com"),
fileInput("datafile", "Choose CSV File",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")),
tags$hr(),
checkboxInput('header', 'Header', TRUE),
radioButtons('sep', 'Separator',
c(Comma=',',
Semicolon=';',
Tab='\t'),
','),
selectInput(
"select",
label = h3("Select Channel"),
choices = c("Users", "New_Users"),
selectize = TRUE,
selected = "All")
)
)
服务器逻辑
server <- function(input, output, session) {
getData <- reactive({
inFile <- input$datafile
if (is.null(input$datafile))
return(NULL)
data2<-read.csv(inFile$datapath, header=input$header, sep=input$sep,
quote=input$quote)
#save(data2, file = "dataread.RData")
return(data2)
})
adstock <- function(x, rate=0){
return(as.numeric(stats::filter(x=x, filter=rate, method="recursive")))
}
model <- reactive({
raw_data <- getData()
observeEvent(input$select,{
target <- input$select
})
ts <- ts(raw_data$target, frequency = 12, start=c(2016,07))
decomposition <- decompose(ts)
mod <- nls(target~b0+b1*adstock(variable, rate),data = raw_data,
start=c(b0=1, b1=1, rate=0))
})
}
模型中的目标用户应该来自 UI 中的输入。
请帮助如何解决这个问题。
非常感谢提前!