Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 模块化应用程序代码_R_Dataframe_Module_Shiny_Reactive - Fatal编程技术网

R 模块化应用程序代码

R 模块化应用程序代码,r,dataframe,module,shiny,reactive,R,Dataframe,Module,Shiny,Reactive,我正在尝试分离我的闪亮应用程序的功能,以使其可重用 我有我的用户界面。R我定义的文件: tabPanel("Unemployed", source("unemployed_select.R", local=TRUE)$value), 在我的失业_select.R中,我定义: fluidPage( titlePanel("Basic DataTable"), # Create a new Row in the UI for selectInputs fluidRow( column(4,

我正在尝试分离我的闪亮应用程序的功能,以使其可重用

我有我的用户界面。R我定义的文件:

tabPanel("Unemployed", source("unemployed_select.R", local=TRUE)$value),
在我的失业_select.R中,我定义:

fluidPage(
titlePanel("Basic DataTable"),

# Create a new Row in the UI for selectInputs
fluidRow(
column(4,
       selectInput("man",
                   "Manufacturer:",
                   c("All",
                     unique(as.character(mpg$manufacturer))))
),
column(4,
       selectInput("trans",
                   "Transmission:",
                   c("All",
                     unique(as.character(mpg$trans))))
),
column(4,
       selectInput("cyl",
                   "Cylinders:",
                   c("All",
                     unique(as.character(mpg$cyl))))
)
),
# Create a new row for the table.
fluidRow(
DT::dataTableOutput("table")
)
)
我的服务器.R文件是:

library(shiny)
library(shinythemes)
library(dataset)

shinyServer(function(input, output) {

# Filter data based on selections
output$table <- DT::renderDataTable(DT::datatable({
data <- mpg
if (input$man != "All") {
  data <- data[data$manufacturer == input$man,]
}
if (input$cyl != "All") {
  data <- data[data$cyl == input$cyl,]
}
if (input$trans != "All") {
  data <- data[data$trans == input$trans,]
}
data
}))


})    
库(闪亮)
图书馆(shinythemes)
库(数据集)
shinyServer(功能(输入、输出){
#根据选择过滤数据

output$table您是对的,您需要使用
source()
来加载模块文件,但是对于Shiny,您需要知道名称空间。模块及其源文件必须共享一个名称空间,其中共享了事物的名称。例如,在您的模块代码中,您有以下行:

column(4,
   selectInput("man",
               "Manufacturer:",
               c("All",
                 unique(as.character(mpg$manufacturer))))
但是您希望模块共享它所包含的文件的名称空间,因此您需要有一种方法让包含模块的文件知道哪些部分是ID,如“man”,哪些部分是严重的参数,如“Manufacturer:”

所以在一个闪亮的模块中,这条线会变成

column(4,
   selectInput(ns("man"),
               "Manufacturer:",
               c("All",
                 unique(as.character(mpg$manufacturer))))
这里使用
ns()
函数将id包含在名称空间中,这将允许应用程序的其余部分使用您声明的id“man”

这里有一个很好的名称空间和编写模块指南:

上面的链接指出,您必须使用命名空间ID,必须使模块适合函数,并使用
ui.R
文件中的
callModule()
调用该函数,并且必须将所有内容包装在
tagList
中,而不是
fluidPage


祝你好运!

ỳ您的源代码
make_df.R
server.R
中?是的,使用源代码(“make_df.R”)。我甚至尝试在服务器文件夹中创建单独的脚本,试图遵循showmeshiny中的一个示例,但没有成功谢谢Farhan。非常有用