Развертывание ShinyApp с не-ASCII символами - PullRequest
1 голос
/ 21 апреля 2020

У меня есть приложение, которое я хотел бы развернуть shinyapps.io, и я использую стандартную процедуру (описанную здесь ), чтобы попытаться развернуть его. К сожалению, я продолжаю получать это сообщение об ошибке. enter image description here

После нескольких часов отладки я вполне уверен, что это происходит, потому что я пытаюсь прочитать файл .csv, содержащий символы, не входящие в ASCII (Umlaute, например, Ä). Я пробовал описанные опции здесь (то есть, сохраняя все соответствующие сценарии и файлы .csv в виде файлов UTF-8, а также явно устанавливая параметры кодирования в UTF-8 перед развертыванием приложения).

Что еще я могу попробовать, кроме простого изменения символов в моих файлах CSV (чего я действительно хотел бы избежать)?

Большое спасибо за вашу помощь!

Попытка минимального воспроизводимого примера здесь.

Код приложения находится здесь:

library(shiny)
library(formattable)
library(readxl)


fp = read.csv("./with1.csv",stringsAsFactors = FALSE,strip.white = TRUE)


ui <- fluidPage(
mainPanel(
 formattableOutput("t1"),
 tags$style("#t1 {color:steelblue;}"),
 tableOutput("t2")

)
)

server <- function(input, output, session) {


 output$t2 = renderTable({
   fp
 })


  output$t1 = renderFormattable({
    test = as.data.frame(matrix(ncol=4,nrow=1))
    colnames(test) = c("Price","Avy Risk","Tomorrow / This Week","Drive Time")
    test[1,]=c(paste("\U20AC","29"),"2","26cm/ 85cm","3h45m")

    formattable(test,
                align = c("c","c","c","c"),
                list(`Price` = formatter("span", style = ~ style(font.weight = "bold",color="#4187FF",
                                                                 border = "1px solid #4187FF",border.radius="4px",
                                                                 padding="3px")),
                     `Avy Risk` = formatter("span", style = ~ style(font.weight = "bold",color="#FF705A",
                                                                    border = "1px solid #FF705A",border.radius="4px",
                                                                    padding="3px")),
                     `Tomorrow / This Week` = formatter("span", style = ~ style(font.weight = "bold",color="#5cb85c",
                                                                                border = "1px solid #5cb85c",border.radius="4px",
                                                                                padding="3px")),
                     `Drive Time` = formatter("span", style = ~ style(font.weight = "bold",color="#C13BFF",
                                                                      border = "1px solid #C13BFF",border.radius="4px",
                                                                      padding="3px"))

                )
    )
  })

}

shinyApp(ui, server)

Набор данных fp (сохраненный в файле excel.csv) выглядит следующим образом:

[![enter image description here][4]][4]

После правильного подключения RStudio Для RSConnect мое заявление о развертывании выглядит следующим образом:

options(encoding = "UTF-8")
rsconnect::deployApp('C:/Users/fiscs14/Desktop/PowderHound/test')

Я надеюсь, что этот пример несколько легко воспроизводим и дает вам представление о проблеме, с которой я сталкиваюсь.

1 Ответ

1 голос
/ 22 апреля 2020

Хорошо, так что если есть кто-то еще, кто заинтересован в этом, я нашел решение. Я не уверен, почему это работает, но это практический обходной путь.

Вместо read_csv используйте read_excel. Есть некоторые вопросы SO, а также другие указания, указывающие на то, что кодировка в csv является кошмаром, поэтому, похоже, это делается для символов не-ASCII.

...