Блестящие приложения с объектом GWmodel не найдены
Я новичок в R и хочу создавать свои собственные приложения Shiny на основе пакета R под названием GWModel. Вот мой код
library(shiny)
library(GWmodel)
library(sp)
ui<-shinyUI(fluidPage(
titlePanel("Model"),
sidebarLayout(
sidebarPanel(
textInput(inputId = "tanah",
label = "Luas Tanah",
value = 72),
textInput(inputId = "bangunan",
label = "Luas Bangunan",
value = 36),
textInput(inputId = "lat",
label = "Latitude",
value = -6.401150),
textInput(inputId = "long",
label = "Longitude",
value = 106.770416),
actionButton("Run_model", "Run model")
),
mainPanel(
tabsetPanel(
tabPanel("model summary", tableOutput('summary'), verbatimTextOutput('summary2'))
)
)
)))
server<- function(input,output,session){
#Train data
train.data <- read.csv("depoklagi.csv")
#Train Data SPDF
train.data.spdf <- SpatialPointsDataFrame(coords = train.data[,c("longlamudi","latlamudi")],
data = train.data[,c("hrglamudi","jdllamudi","ltxlamudi","lbxlamudi","brlamudi")],
proj4string = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"))
#Train Data DM
train.data.DM <- gw.dist(dp.locat = coordinates(train.data.spdf))
#Train Data BW (given)
train.data.bw <- bw.gwr(hrglamudi ~ ltxlamudi + lbxlamudi,
data = train.data.spdf,
approach = "CV",
kernel = "bisquare",
adaptive = T,
dMat = train.data.DM)
####################################################################################################################
#Test data compile
test.data <- reactive({
X <- as.numeric(1)
hrglamudi <- as.numeric(0)
jdllamudi <- as.character("Prediction")
ltxlamudi <- as.numeric(as.character(input$tanah))
lbxlamudi <- as.numeric(as.character(input$bangunan))
brlamudi <- as.numeric(2)
latlamudi <- as.numeric(as.character(input$lat))
longlamudi <- as.numeric(as.character(input$long))
test.data <- cbind(X,hrglamudi,jdllamudi,ltxlamudi,lbxlamudi,brlamudi,latlamudi,longlamudi)
test.data <- as.data.frame(test.data)
test.data$X <- as.numeric(test.data$X)
test.data$hrglamudi <- as.numeric(test.data$hrglamudi)
test.data$jdllamudi <- as.character(test.data$jdllamudi)
test.data$ltxlamudi <- as.numeric(as.character(test.data$ltxlamudi))
test.data$lbxlamudi <- as.numeric(as.character(test.data$lbxlamudi))
test.data$brlamudi <- as.numeric(test.data$brlamudi)
test.data$latlamudi <- as.numeric(as.character(test.data$latlamudi))
test.data$longlamudi <- as.numeric(as.character(test.data$longlamudi))
test.data
})
#Test data SPDF
test.data.spdf <- reactive({SpatialPointsDataFrame(coords = test.data()[,c("longlamudi","latlamudi")],
data = test.data()[,c("hrglamudi","jdllamudi","ltxlamudi","lbxlamudi","brlamudi")],
proj4string = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"))
test.data.spdf
})
#Test data DM
test.data.DM <- reactive({gw.dist(dp.locat = coordinates(train.data.spdf),
rp.locat = coordinates(test.data.spdf()))
test.data.DM
})
####################################################################################################################
#GWModel
model <- eventReactive(input$Run_model,{gwr.predict(hrglamudi ~ ltxlamudi + lbxlamudi + brlamudi,
data = train.data.spdf,
predictdata = test.data.spdf(),
bw = train.data.bw,
kernel = "bisquare",
adaptive = T,
dMat1 = test.data.DM(),
dMat2 = train.data.DM)
model
})
output$summary <- renderTable(test.data())
output$summary2 <- renderText(model()$SDF$prediction)
}
shinyApp(ui=ui, server=server)
Когда я запускаю приложение, оно продолжает возвращать "объект 'pd.locat' не найден", я уже прочитал код за gwr.predict
Здесь и здесь для данных, которые я использовал
Я хочу ожидать, что результатом станут предсказанные числа модели. Я ценю ваше время, читая это и ищу решение. Спасибо
1 ответ
Проблема в ваших реактивных элементах. В том, что делаетtest.data
вы создаете объект в реактивном названии test.data
а затем изменяя его, поэтому вам нужно вернуть объект в конце, что вы сделали, вызвав test.data
как последний элемент функции. То же самое не относится к реакциям, которые создаютtest.data.spdf
, test.data.DM
а также model
. В каждой из этих функций вы вызываете функцию, которая производит вывод, и у вас есть функция, которая возвращает результат напрямую. Вы не сохраняете его в объекте, который затем нужно вернуть. Последняя строка каждого из этих ответов - это вызов несуществующего объекта. Если вы удалите строки в каждом из тех ответов, которые возвращают объект (т. Е. Последние строки каждого из трех упомянутых выше), приложение должно работать.
library(shiny)
library(GWmodel)
library(sp)
ui<-shinyUI(fluidPage(
titlePanel("Model"),
sidebarLayout(
sidebarPanel(
actionButton("browser", "browser"),
# tags$script("$('#browser').hide();"),
textInput(inputId = "tanah",
label = "Luas Tanah",
value = 72),
textInput(inputId = "bangunan",
label = "Luas Bangunan",
value = 36),
textInput(inputId = "lat",
label = "Latitude",
value = -6.401150),
textInput(inputId = "long",
label = "Longitude",
value = 106.770416),
actionButton("Run_model", "Run model")
),
mainPanel(
tabsetPanel(
tabPanel("model summary", tableOutput('summary'), verbatimTextOutput('summary2'))
)
)
)))
server<- function(input,output,session){
observeEvent(input$browser,{
browser()
})
#Train data
train.data <- read.csv("depoklagi.csv")
#Train Data SPDF
train.data.spdf <- SpatialPointsDataFrame(coords = train.data[,c("longlamudi","latlamudi")],
data = train.data[,c("hrglamudi","jdllamudi","ltxlamudi","lbxlamudi","brlamudi")],
proj4string = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"))
#Train Data DM
train.data.DM <- gw.dist(dp.locat = coordinates(train.data.spdf))
#Train Data BW (given)
train.data.bw <- bw.gwr(hrglamudi ~ ltxlamudi + lbxlamudi,
data = train.data.spdf,
approach = "CV",
kernel = "bisquare",
adaptive = T,
dMat = train.data.DM)
####################################################################################################################
#Test data compile
test.data <- reactive({
X <- as.numeric(1)
hrglamudi <- as.numeric(0)
jdllamudi <- as.character("Prediction")
ltxlamudi <- as.numeric(as.character(input$tanah))
lbxlamudi <- as.numeric(as.character(input$bangunan))
brlamudi <- as.numeric(2)
latlamudi <- as.numeric(as.character(input$lat))
longlamudi <- as.numeric(as.character(input$long))
test.data <- cbind(X,hrglamudi,jdllamudi,ltxlamudi,lbxlamudi,brlamudi,latlamudi,longlamudi)
test.data <- as.data.frame(test.data)
test.data$X <- as.numeric(test.data$X)
test.data$hrglamudi <- as.numeric(test.data$hrglamudi)
test.data$jdllamudi <- as.character(test.data$jdllamudi)
test.data$ltxlamudi <- as.numeric(as.character(test.data$ltxlamudi))
test.data$lbxlamudi <- as.numeric(as.character(test.data$lbxlamudi))
test.data$brlamudi <- as.numeric(test.data$brlamudi)
test.data$latlamudi <- as.numeric(as.character(test.data$latlamudi))
test.data$longlamudi <- as.numeric(as.character(test.data$longlamudi))
test.data
})
#Test data SPDF
test.data.spdf <- reactive({SpatialPointsDataFrame(coords = test.data()[,c("longlamudi","latlamudi")],
data = test.data()[,c("hrglamudi","jdllamudi","ltxlamudi","lbxlamudi","brlamudi")],
proj4string = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"))
})
#Test data DM
test.data.DM <- reactive({gw.dist(dp.locat = coordinates(train.data.spdf),
rp.locat = coordinates(test.data.spdf()))
})
####################################################################################################################
#GWModel
model <- eventReactive(input$Run_model,{gwr.predict(hrglamudi ~ ltxlamudi + lbxlamudi + brlamudi,
data = train.data.spdf,
predictdata = test.data.spdf(),
bw = train.data.bw,
kernel = "bisquare",
adaptive = T,
dMat1 = test.data.DM(),
dMat2 = train.data.DM)
})
output$summary <- renderTable(test.data())
output$summary2 <- renderText(model()$SDF$prediction)
}
shinyApp(ui=ui, server=server)