Я новичок в R и программировании, поэтому, пожалуйста, извините меня, если это простой вопрос.
Я пытаюсь создать приложение Shiny, которое отображает различные сценарии прибыли ios модель ставок в зависимости от входных значений, выбранных пользователем.
Элементы управления: 1. Тип ставки, 2. Модель прогноза и 3. Стратегия ставок.
По сути, я хочу условно добавить новые столбцы в исходном фрейме данных и в конечном итоге использовать некоторые из новых столбцов для создания графика.
Файл пользовательского интерфейса:
ui<- fluidPage(
h1("Germany"),
selectInput(inputId="Type", label= "Bet Type",
choices = c("Home", "Away")),
selectInput(inputId="Model", label= "Prediction Model",
choice=c("LASSO", "Step-Model1", "Step-Model2")),
selectInput(inputId="StakingStrategy", label= "Staking Strategy",
choice=c("Fixed Amount","Fractional System",
"Fractional Kelly")),
plotOutput('budget')
)
Файл сервера:
server<- function(input, output){
#load dataset
datafile1<-read.csv("Bundesligaprep.csv",
header=TRUE,stringsAsFactors = FALSE)
#Load required prediction-model
pred <-reactive({
if (input$Type == "Home")
{if (input$Model == "LASSO")
{readRDS("BundesligaLASSO.rds")}
else if (input$Model == "Step-Model1")
{readRDS("BundesligaStep1.rds")}
else if (input$Model =="Step-Model2")
{readRDS("BundesligaStep2.rds")}}
else if (input$Type == "Away")
{if (input$Model == "LASSO")
{readRDS("BundesligaLASSO.A.rds")}
else if (input$Model == "Step-Model1")
{readRDS("BundesligaStep1A.rds")}
else if (input$Model =="Step-Model2A")
{readRDS("BundesligaStep2A.rds")}}
})
#add predicted odds and probabilities in new columns
df <- reactive({
df<-
datafile1()%>%
modelr::add_predictions(pred,var="MyProbsH", type="response")%>%
mutate(MyProbsX2=1-MyProbsH)%>%
mutate(MyOddsH=1/MyProbsH)%>%
mutate(MyOddsX2=1/MyProbsX2)%>%
mutate(RealOddsB365H=B365H/(1/(1/B365H+1/B365D+1/B365A)))%>%
mutate(RealOddsPSH=PSH/(1/(1/PSH+1/PSD+1/PSA)))%>%
mutate(RealProbsB365H=1/RealOddsB365H)%>%
mutate(RealProbsPSH=1/RealOddsPSH)
#add new columns for budget and profit based on staking strategy
reactiveValues({
df$profitH<-as.numeric(0)
df$budgetH<-as.numeric(100)
if (input$StakingStrategy == "FractionalKelly")
{
for(i in 2:nrow(df[51]))
{
if(df[i, 49]<df[i,51] & df[i,49]<=2 & df[i,36]==1)
{df[i,55]<-(((((df[i,51]-1)*(1/df[i,49]))-(1-(1/df[i,49])))/(df[i,51]-1))*df[i-1, 56]*df[i, 39]-((((df[i,51]-1)*(1/df[i,49]))-(1-(1/df[i,49])))/(df[i,51]-1))*df[i-1, 56])/8
df[i,56]<-df[i-1,56]+df[i,55]}
else if(df[i, 49]<df[i,51] & df[i,]<=2 & df[i,36]==0)
{df[i,55]<- -(((((df[i,51]-1)*(1/df[i,49]))-(1-(1/df[i,49])))/(df[i,51]-1))*df[i-1, 56])/8
df[i,56]<-df[i-1,56]+df[i,55]}
else
{
df[i,56]<-df[i-1,56]
df[i, 55]<-as.numeric(0)}}
}
else if (input$StakingStrategy == "FractionalSystem")
{
for(i in 2:nrow(df[51]))
{
if(df[i, 49]<df[i,51] & df[i,49]<=2 & df[i,36]==1)
{df[i,55]<-(0.1*df[i-1,56] *df[i, 39])-(0.1*df[i-1, 56])
df[i,56]<-df[i-1,56]+df[i,55]}
else if(df[i, 49]<df[i,51] & df[i,49]<=2 & df[i,36]==0)
{df[i,55]<- -0.1*df[i-1, 56]
df[i,56]<-df[i-1,56]+df[i,55]}
else
{
df[i,56]<-df[i-1,56]
df[i, 55]<-as.numeric(0)}}
}
else if (input$StakingStrategy == "Fixed Amount")
{
for(i in 2:nrow(df[51]))
{
if(df[i, 49]<df[i,51] & df[i,49]<=2 & df[i,36]==1)
{df[i,55]<-10*df[i-1,56] *df[i, 39]-10
df[i,56]<-df[i-1,56]+df[i,55]}
else if(df[i, 49]<df[i,51] & df[i,]<=2 & df[i,36]==0)
{df[i,55]<- -10*df[i-1, 56]
df[i,56]<-df[i-1,56]+df[i,55]}
else
{
df[i,56]<-df[i-1,56]
df[i, 55]<-as.numeric(0)}}
}
})
#create plot
output$budget <- renderPlot({plot(df$Count, df$budget,type="l", col="blue", xlab="Matches played", ylab="Budget"
)})
}
shinyApp(ui = ui, server = server)
Я сталкиваюсь с различными проблемами, но сейчас, когда я запускаю приложение, появляется сообщение об ошибке: «операция не разрешена без активного реактивного контекста». Я действительно изо всех сил пытаюсь понять некоторые основные концепции c, используемые в Shiny, поэтому я был бы признателен за любой намек относительно того, почему возникает эта ошибка. Я надеюсь, что смогу разъяснить свою просьбу.