2017-02-25 44 views
0

當我使用runApp()時,我的應用程序在本地計算機上正常工作。錯誤:在將應用程序部署爲發光時找不到函數「dmy」

問題是,當我想部署它,它給了我一個錯誤,它無法找到一個功能: 錯誤:沒有本質pudo encontrar LAfunción「DMY」

翻譯爲: 錯誤:找不到函數「dmy」。

我知道這個函數是lubridate(我在本地)的一部分,我知道我應該把它安裝在服務器上,但我不能。我環顧四周,我找不到 library(lubridate) 應該去。

這裏是我的代碼(遺憾的語法錯誤,但林新在閃亮):

#Comienzo la aplicación 

#Cargo las librerías 
require(shiny) 
require(rsconnect) 
require(lubridate) 

#Cambio el directorio (solo lo uso si lo voy a correr local) 
#setwd("C:/Users/borja.sanz/Desktop/Borja/R/Shiny/Directorio - Proyecciones Productos") 


#Cargo los datos 
data<-read.csv("./data/Pruebas Shiny.csv") 

#Obtengo los niveles de cada factor 
Producto.Maestro = levels(data$Producto.Maestro) 
Producto = levels(data$Producto) 
Pais = levels(data$Pais) 

#Cambio las fechas a formato de fecha 
data$Fecha = dmy(data$Fecha) 

#Extraigo el año 
data$Año = as.factor(year(data$Fecha)) 

#Obtengo los niveles de Año 
Años = levels(data$Año) 

#------------------------------------------------------------------- 
#Comienzo la interfaz de usuario 
ui <- 
    shinyUI(pageWithSidebar(
    headerPanel("Proyecciones de Productos"), 
    #Creo los inputs del sidebar 
     sidebarPanel(uiOutput("duracion"), 
        uiOutput("pais"), 
        uiOutput("año"), 
        uiOutput("producto.maestro"), 
        uiOutput("producto")), 
     mainPanel() 
) 
) 


#Comienzo el archivo de servidor 
require(shiny) 
require(lubridate) 

server <- function(input, output) { 
    output$duracion = renderUI(sliderInput(inputId = "duracion", 
             label = "Seleccione la duración de su promoción:", 
             value = 45, min = 15, max = 90) 
) 

    output$pais = renderUI(selectInput(inputId = "pais", 
            label = "", 
            choices = c("Seleccione un país",levels(data$Pais)), 
            selected = "Seleccione un país") 
) 

    output$año = renderUI(selectInput(inputId = "año", 
            label = NULL, 
            choices = c("Seleccione un año",levels(data$Año)), 
            selected = "Seleccione un año") 
) 

    output$producto.maestro = renderUI(
     selectInput(inputId = "producto.maestro", 
         label = NULL, 
         choices = c("Seleccione un producto maestro",levels(data$Producto.Maestro[which(data$Pais == input$pais & data$Año == input$año)])), 
         selected = "Seleccione un producto maestro") 
) 

    output$producto = renderUI(
    if(input$pais == "Seleccione un país" || input$año == "Seleccione un año" || input$producto.maestro == "Seleccione un producto maestro"){return() 
    }else selectInput(inputId = "producto", 
        label = NULL, 
        choices = c("Seleccione los productos relevantes",levels(factor(data$Producto[which(data$Pais == input$pais & data$Producto.Maestro == input$producto.maestro)]))), 
        selected = levels(factor(data$Producto[which(data$Pais == input$pais & data$Producto.Maestro == input$producto.maestro)])), 
        multiple = TRUE) 
) 
} 

#Corro la aplicación 
shinyApp(ui = ui, server = server) 
+0

您可能沒有加載lubridate軟件包。我也有一些像'Años' –

+0

@ 42這樣的沒有引號的名字的問題 - 我修復了怪異的字符。他們是在保存時因爲編碼而發生的。我知道我沒有加載lubridate軟件包,但我的問題是我的代碼應該在哪裏去加載到服務器上? – borjasanz

回答

0

一個解決辦法是利用

lubridate::dmy(),而不是與require()或加載lubridate包library()。這樣做需要多一點打字,因爲您需要用lubridate::dmy()替換dmy()的任何實例。

+0

沒有工作,所以我只用as.POSIXct代替lubridate。但是,我現在得到了與ggplot相同的錯誤。任何幫助? – borjasanz

+0

你的代碼是在單個文件app.R中嗎?我也是新來的,所以我想看看我能否重現你的錯誤。我不確定你的意思是「部署」應用程序。 –

+0

您是否成功部署了其他應用程序?如果不是,則可能需要驗證您是否成功部署應用程序。例如,您可以嘗試從RStudio圖庫部署應用程序:https:// shiny.rstudio.com/gallery/。這樣,您將擁有一個已知可正常工作的應用程序,因此您可以排查部署過程中出現錯誤的可能性。 –

相關問題