Я пытаюсь развернуть очень простое приложение на Shinyapps.io.
Мое приложение следующее, структура папки — mines_peru/app.R (файл ниже) и mines_peru/data/clean_active_mines.RDS.
library(shiny) # for shiny apps
library(leaflet) # renderLeaflet function
library(sf)
library(dplyr)
library(tmap)
library(maptools)
library(ggplot2)
library(reshape2)
library(rstudioapi)
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
data_m <- readRDS('data/clean_active_mines.RDS')
data_m <- data_m[!is.na(data_m$LongitudeD),]
ui = fillPage(
sliderInput(inputId = "yeari", "Year", 1995, 2020, value = 1995),
leafletOutput(outputId = "map", width = "100%", height = "100%")
)
server = function(input, output) {
output$map = renderLeaflet({tmap_leaflet(tm_shape(data_m[data_m$year == input$yeari,] %>% st_as_sf()) + tm_dots(), in.shiny = TRUE) %>% setView(-76, -10, 6)})
}
shinyApp(ui, server)
Мне не разрешено делиться истинными данными, поэтому следующего фрагмента может быть достаточно для создания аналогичного набора данных.
library(sf)
set.seed(1)
lat <- sample(-10:-40, 200, replace = T)
lon <- sample(-60:-90, 200, replace = T)
year <- sample(1995:2020, 200, replace = T)
df <- data.frame(lat,lon,year)
df_sf <- st_as_sf(df, coords = c('lon','lat'))
saveRDS(df_sf, "mines_peru/data/clean_active_mines.RDS')
Мой код развертывания следующий:
library(rsconnect)
rsconnect::setAccountInfo(name='******',
token='******',
secret='*******')
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
rsconnect::deployApp('mines_peru/')
Я предполагаю, что я допустил ошибку при индексации файлов. Строка, использующая определение имени каталога в файле app.R, вероятно, неверна. Однако я не смог найти достаточно информации о том, как это исправить. Ошибки, которые я получаю,
✔ Re-deploying "mines_peru" using "server: shinyapps.io / username: *******"
ℹ Looking up application with id "12211070"...
✔ Found application <https://******.shinyapps.io/mines_peru/>
ℹ Bundling 2 files: app.R and data/clean_active_mines.RDS
ℹ Capturing R dependencies with renv
Error in read.dcf(file = tmpf) : cannot open the connection
Итак, я понял, что развертывание способно найти и упаковать файлы.
В качестве второй проверки я удаляю setwd(dirname(rstudioapi::getActiveDocumentContext()$path)) из кода app.R. Я все еще получаю ту же ошибку.
Даже если я его удалю, в выводе ничего не изменится.





Ваш код работает для меня. Я создал данные и app.R, как вы, и запустил:
rsconnect::setAccountInfo(name='****', token='****', secret='****')
rsconnect::deployApp(appDir = "C:/Users/Victor/Desktop/test/", appName = "Test_SOF")
Он работает нормально, за исключением того, что мне не удалось загрузить пакет Maptools (устарело), поэтому приложение загружается онлайн, но не работает. Итак, мои два предложения: попробуйте указать абсолютный путь для appDir и попробуйте удалить библиотеку Maptools. Если проблема не в этом, я бы сказал, что это связано с вашей учетной записью Shinyapps.io; у вас там работают другие приложения?
Я считаю, что проблема была связана с приложением Maptools и путем. Я исправил оба и теперь только что смог развернуть.
Что, если вы удалите часть
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))из своегоapp.Rкода. Кажется маловероятным, что это будет успешно работать на сервере.