i want have user upload 2 csv files. after done want send data table lm in rendertable
, generate results , create table output of regression model. basics of ui , server code below. use fileinput read in data. server uses reactive construction construct datainput
involving if (is.null) return(null)
each of csv files. thought stop rendertable
code doing until both csv files uploaded. in fact rendertable still reacting. may misunderstanding how use reactive functions pass data table reactive function.
ui <- fluidpage( titlepanel("generate calibration parameters"), # sidebar 2 csv imports sidebarlayout( sidebarpanel( fileinput('master', 'choose master aqe csv file', accept = c('text/csv', 'text/comma-separated values,text/plain', '.csv')), fileinput('slave', 'choose slave aqe csv file', accept = c('text/csv', 'text/comma-separated-values,text/plain','.csv')) ), mainpanel(width = "100%", fluidrow(align = "center", column( width = 6, div(tableoutput("coefftableo3"), style = "font-size:80%") )))))) server <- function(input, output) { datainput <- reactive({ masterinfo <- input$master if (is.null(masterinfo)) return(null) dt.master <- read_csv(masterinfo$datapath) dt.master <- as.data.table(dt.master) slaveinfo <- input$master if (is.null(slaveinfo)) return(null) dt.slave <- as.data.table(read_csv(slaveinfo$datapath) timezone <- "america/denver" #aggregate minutes; note cut returns factor 'timestamp' becomes 'cut' varstoagg.master <- c("no2", "o3") dt.master.min <- dt.master[, lapply(.sd, mean), = list(cut(dt.master$timestamp, breaks = "min")), .sdcols = varstoagg.master] varstoagg.slave <- c("no2.slave", "o3.slave") dt.slave.min <- dt.slave[, lapply(.sd, mean), = list(cut(dt.slave$timestamp.slave, breaks = "min")), .sdcols = varstoagg.slave] # combine 2 combinedresults <- merge(dt.master.min, dt.slave.min, = 'cut') # convert cut posix , change name time combinedresults[, time := as.posixct(cut,format = "%y-%m-%d %h:%m:%s", tz = timezone)] combinedresults[,cut := null] return(combinedresults) }) output$coefftableo3 <- rendertable({ # generate regression results combinedresults <- datainput() print(str(combinedresults)) lmresultso3 <- lm(o3.slave ~ o3, combinedresults) coef(summary(lmresultso3))["o3","estimate"] coef(summary(lmresultso3))["(intercept)","estimate"] }) }
Comments
Post a Comment