Корень проблемы в том, что ваш набор данных data_test
находится вне области действия при разборе функций вашего пакета.Такое поведение ожидается, и большинство пакетов обходят это, используя функции, которые динамически загружают набор данных по мере необходимости.
Простой обходной путь делает именно это: определяя пользовательский интерфейс приложения как функцию
library(shiny)
ui <- function() {
data(data_test, package = "TESTshinyapp")
fluidPage(
"Names of the dataset: ",
paste(names(data_test), collapse = ", ")
)
}
server <- function(input, output, session) {
}
shinyApp(ui(), server)
Таким образом, данные будут загружаться динамически, когда приложение запускается так же, как на сервере.( ПРИМЕЧАНИЕ : в вашем текущем пакете sidebar
также необходимо преобразовать в функцию для выполнения этой работы.)
Другая возможность - загрузить данные в launchApp
, а затемсоздайте ui
и server
с фабричным шаблоном .Другими словами: набор данных помещается в область действия в launchApp
и затем передается в качестве аргумента фабрикам.
server_factory <- function(myData) {
function(input, output, session) {
## use myData here as you please
}
}
ui_factory <- function(myData) {
fluidPage(
"Names of the dataset: ",
paste(names(myData), collapse = ", ")
)
}
launchApp <- function() {
data(data_test, package = "TESTshinyapp")
shinyApp(
ui_factory(data_test),
server_factory(data_test)
)
}
launchApp()
Этот шаблон также позволяет вам определять параметры для launchApp
и передавать их взаводы, если хотите.