分开的server.R和ui.R文件中的模块

时间:2019-09-19 14:31:35

标签: r module shiny

是否可以在Shiny App中创建模块,该模块以单独的app.R,server.R和ui.R文件记录下来?

我发现的所有示例都是一个包含嵌入式服务器和ui功能的app.R文件。请参见example 1example 2 !,示例3

(我从最后一个示例中获取了代码进行测试)。

我尝试运行此应用程序:

app.R

def remove_zeros_from_ip(ip_add): 
  return '.'.join(p.lstrip('0') or '0' for p in ip_add.split('.'))

ui.R

library(shiny)

# load module functions
source("hello_world.R")

# Run the application 
shinyApp(ui = ui, server = server)

server.R

#ui.R

library(shiny)
#source("hello_world.R")
ui <- fluidPage(

  titlePanel("Using of Shiny modules"),

  fluidRow(
    # Call interface function of module "hello_world"
    hello_worldUI(id = "id_1")
  )

)

hello_world.R

#server.R

library(shiny)
source("hello_world.R")


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

  # Call logic server function of module "hello_world"
  callModule(module = hello_world, id = "id_1")

}

# UPDATE! -> my Error comes from this line of code  in server.R file: 
#shinyApp(ui = ui, server = server) 
#Removing the line above solve the problem. 

但是我得到了这个错误:

警告:发生错误:未找到对象'ui'
  52:力量
  51:uiHttpHandler
  50:shinyApp
force(ui)错误:找不到对象'ui'

1 个答案:

答案 0 :(得分:0)

除非您在同一个文件中定义uiserver对象,并且它们在运行时生成,或者您在{{1 }}。像下面那样更改您的shinyApp(),它应该可以工作:

app.R