У меня блестящее приложение, которое преобразует цифры с помощью sprintf
. Первоначально это было частью более крупного приложения, но для устранения неполадок я сократил его до функциональности, которая вызывает проблемы.Я также указал, какие пакеты должна использовать функция, в случае возникновения конфликтов пакетов / масок и т. Д.
Он запускается локально, но когда я загружаю его на сервер Shiny Apps, он ломается.
```
library(base)
library(shiny)
#Function to covert between sss.ss and mm:ss.ss format
mmss_format <- function(x, ...) {
sec <- x%%60
min <- x%/%60
sec <- base::sprintf("%05.2#f", sec)
ifelse(min == 0, base::paste(sec),
base::paste(min, sec, sep = ":"))
}
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Test app"),
# Show input and output
mainPanel(textInput(inputId = "TestIn1",
label = "To:",
value = "100.45",
width = "100px"),
br(),
textOutput(outputId = "TestOut1")
))
# Define server
server <- function(input, output) {
output$TestOut1 <- reactive({mmss_format(as.numeric(input$TestIn1))
})
}
# Run the application
shinyApp(ui = ui, server = server)
```
При локальном запуске, когда я ввожу число (например, приведенный выше пример 100.45), функция mmss_function возвращает 1: 40.45 в виде строки символов (что означает одну минуту, 40,45 секунды).Это то, что я хочу.
Запуск на сервере shinyapps, хотя я получаю 1:% 05.2 # f.Это моя проблема.https://gpilgrim.shinyapps.io/testapp2/
Это говорит мне, что что-то не так с функцией sprintf, где вместо того, чтобы интерпретировать "% 05.2 # f" согласно документации sprintf, она просто печатает эту строку.