我试图创建一个闪亮的应用程序,允许我拟合线性模型,显示有关它们的信息,然后保存它们。
我遇到了一个问题:当我保存模型时,它需要一个巨大的位置。这是一个简化的代码:
library(shiny)
library(ggplot2)
ui <- shinyUI(fluidPage(
titlePanel("Save linear Model"),
sidebarLayout(
sidebarPanel(
actionButton("save","SAVE !")
),
mainPanel(
textOutput("saved")
)
)
))
server <- shinyServer(function(input, output) {
load("donnees/new/V283/V283_complete.RData")
observeEvent(input$save,{
lm.fit<-lm(price~.,data=diamonds)
save(lm.fit, file="question-x-validated/my-model.RData")
output$saved<-renderText("Saved")
})
})
shinyApp(ui = ui, server = server)
事实上,我在我的应用中创建/加载的对象越多,我保存的模型就越大。例如,我加载的对象:
load("donnees/new/V283/V283_complete.RData")
是275.1MB。如果我在加载后保存我的lm.fit,我的rdata文件是36.9Mb。如果我保存我的lm.fit而不加载它,我的文件是13Mb。 如果我直接从R保存我的lm.fit(不使用我的闪亮应用程序),文件是 6,57Mb
正如this link中所述,这可能是一个环境问题。但在我看来,我使用闪亮的事实增加了一些困难,因为上述链接建议的技术都不适用于我的情况。
我也尝试过使用saveRDS功能。并且还取代了:
lm.fit<-lm(price~.,data=diamonds)
通过
assign("lm.fit",lm(price~.,data=diamonds),envir=globalenv())
它会改变文件大小,但它永远不会达到6.57Mb。
在我的真实代码中,我导入了非常大的数据集,我的真实模型变得非常庞大(超过500Mb),并且当加载/保存这些模型时,它使我的Shiny App非常慢。
我非常感谢您提供的任何帮助。
编辑:
看来我的问题来自&#34;条款&#34;我的模型的元素,就像我做的那样:
lm.fit<-lm.fit[1:11]
在保存我的模型之前,我的文件是5.92Mb!但正如你所知,&#34;术语&#34;使用predict()需要元素。而且只做:
attr(lm.fit$terms,".Environment") = c()
不起作用。
另外,有趣的事情:
在lm.fit$terms<-NULL
{p> lm.fit<-lm.fit[-12]
和lm.fit<-lm.fit[1:11]
不会改变任何内容
确实