Start
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
library(shiny)
|
||||
library(rhandsontable)
|
||||
|
||||
DF<-as.data.frame(matrix(nrow=1, ncol=5))
|
||||
colnames(DF)<-c("name","conc.vector","bp.vector","conc.insert","bp.insert")
|
||||
DF[1,]<-rep("",5)
|
||||
|
||||
ui <- fluidPage(
|
||||
|
||||
# Application title
|
||||
titlePanel("Lligacions"),
|
||||
|
||||
# Sidebar with a slider input for number of bins
|
||||
sidebarLayout(
|
||||
sidebarPanel(
|
||||
sliderInput("ratio",
|
||||
"Ratio Insert:Vector :",
|
||||
min = 1,
|
||||
max = 20,
|
||||
value = 10),
|
||||
sliderInput("minim",
|
||||
"Volum mínim:",
|
||||
min = 0.2,
|
||||
max = 1.25,
|
||||
value = 0.5, step = 0.1),
|
||||
sliderInput("voltotal",
|
||||
"Volum Total:",
|
||||
min = 1.5,
|
||||
max = 2.5,
|
||||
value = 2, step = 0.5),
|
||||
width = 3),
|
||||
|
||||
# Show a plot of the generated distribution
|
||||
mainPanel(
|
||||
rHandsontableOutput("hot"),
|
||||
tableOutput("results")
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
# Define server logic required to draw a histogram
|
||||
server <- function(input, output) {
|
||||
|
||||
values <- reactiveValues()
|
||||
|
||||
## Handsontable
|
||||
observe({
|
||||
if (!is.null(input$hot)) {
|
||||
DF = hot_to_r(input$hot)
|
||||
} else {
|
||||
if (is.null(values[["DF"]])){
|
||||
DF <- DF
|
||||
}
|
||||
else{
|
||||
DF <- values[["DF"]]
|
||||
}
|
||||
}
|
||||
values[["DF"]] <- DF
|
||||
})
|
||||
|
||||
output$hot <- renderRHandsontable({
|
||||
print(DF)
|
||||
if (!is.null(DF)){
|
||||
rhandsontable(DF, stretchH = "all", readOnly = F, useTypes = T)
|
||||
}
|
||||
})
|
||||
|
||||
output$results <- renderTable({
|
||||
observe({values})
|
||||
t<-values[["DF"]]
|
||||
print(t)
|
||||
if (nrow(t) > 1){
|
||||
t[2:5]<-as.data.frame(apply(t[2:5],2,as.numeric))
|
||||
}else{
|
||||
t[2:5]<-as.data.frame(t(apply(t[2:5],2,as.numeric)))
|
||||
}
|
||||
|
||||
Vv<-( (input$voltotal*t$conc.insert*t$bp.vector)/(t$conc.vector*t$bp.insert*input$ratio) ) / (1+(t$conc.insert*t$bp.vector)/(t$conc.vector*t$bp.insert*input$ratio))
|
||||
Vi<-input$voltotal-Vv
|
||||
|
||||
t[,"vol.v"]<-Vv
|
||||
t[,"vol.i"]<-Vi
|
||||
t[,"dil.v"]<-1
|
||||
t[,"dil.i"]<-1
|
||||
|
||||
Vv.log<-Vv < input$minim
|
||||
if (TRUE %in% Vv.log){
|
||||
alt.conc.vector<-( (input$voltotal-input$minim)*t$conc.insert*t$bp.vector)/ (input$minim*t$bp.insert*input$ratio)
|
||||
t$dil.v[Vv.log]<-(t$conc.vector/alt.conc.vector)[Vv.log]
|
||||
t$vol.v[Vv.log]<-input$minim
|
||||
t$vol.i[Vv.log]<-(input$voltotal-input$minim)
|
||||
}
|
||||
|
||||
Vi.log<-Vi < input$minim
|
||||
if (TRUE %in% Vi.log){
|
||||
alt.conc.insert<-( (input$voltotal-input$minim)*t$conc.vector*t$bp.insert*input$ratio)/ (input$minim*t$bp.vector)
|
||||
t$dil.i[Vi.log]<-(t$conc.insert/alt.conc.insert)[Vi.log]
|
||||
t$vol.i[Vi.log]<-input$minim
|
||||
t$vol.v[Vi.log]<-(input$voltotal-input$minim)
|
||||
}
|
||||
t
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
# Run the application
|
||||
shinyApp(ui = ui, server = server)
|
||||
Reference in New Issue
Block a user