我正在构建一个具有一个TabPanel的应用程序,用户可以在其中以fst格式上载两个表,该应用程序会创建一个大表,该表将这两个表与其他一些本地存储的参考表连接起来,然后在另一个TabPanel中允许用户可以在最终表的下拉菜单中进行过滤。最终,用户应该能够将过滤后的表格下载为csv文件。我无法使其正常运行,我不知道为什么...
R闪亮错误:没有适用于'filter_'的适用方法,已应用于类“ c('reactiveExpr','reactive')”的对象]
########################
#LIBRARY REQUIRED:
########################
.packages = c("shiny","dplyr","networkD3","tidyverse","tidygraph","ggplot2","shinyWidgets","stats","graphics","markdown","ggalluvial","tidyr","gapminder","tidyverse","superheat","ggsci","DT","fst","haven","plotly", "reshape2","tcltk")
# Install CRAN packages (if not already installed)
.inst <- .packages %in% installed.packages()
if(length(.packages[!.inst]) > 0) install.packages(.packages[!.inst])
# Load packages into session
lapply(.packages, require, character.only=TRUE)
install.packages(.packages)
# Directory:
setwd("\\\\...")
#Loading reference table for shop:
refshop <- read_sas("refshop.sas7bdat")
#Loading reference table for area:
refarea <- read_sas("reftable_area.sas7bdat")
#############################
#CREATING REFERENCE TABLE _TYPE_ and COLUMN:
############################
creating_reference_table<- function(data_x_sideone) {
data_x_upd <- data_x_sideone %>% select('_TYPE_', group, area, pod, division,shop, Subdivision,A, B, C)
#DATA MANIPULATION TO GET Reference_TableType
Reference_TableType <-.....
return(Reference_TableType)
}
#############################
#USER INTERFACE:
############################
ui <- fluidPage(
navlistPanel(well = TRUE,
tabPanel("Files to Load", fileInput("data_x_sideone", "Choose a file for Shop 1", multiple = TRUE, accept = c(".fst")),
fileInput("data_x_sidetwo", "Choose a file for Shop 2", multiple = TRUE, accept = c(".fst"))),
"EXTRACTION",
tabPanel("table Creation to download",
uiOutput("select_var1"),uiOutput("select_var2"),uiOutput("select_var3"),
downloadButton("dl7", "Download"),tableOutput("table7"))
)
)
#)
# Define server logic required to plot variables
server <- function(input, output) {
options(shiny.maxRequestSize=1000*1024^2)
data_x_sideone <- reactive({
infile <- input$data_x_sideone
if (is.null(infile)) {
# User has not uploaded a file yet
return(NULL)
}
read.fst(infile$datapath)
})
data_x_sidetwo <- reactive({
infile <- input$data_x_sidetwo
if (is.null(infile)) {
# User has not uploaded a file yet
return(NULL)
}
read.fst(infile$datapath)
})
Reference_TableType<- reactive({
creating_reference_table(data_x_sideone())
return(Reference_TableType)})
#EXTRACTION TABLE
output$select_var1 <- renderUI({
selectizeInput('var1', 'First selection (table filtered by...', sort(unique(Reference_TableType()$variable)),selected = "A" )
})
output$select_var2 <- renderUI({
selectizeInput('var2', 'Second selection (table filtered by...', sort(unique(Reference_TableType()$variable)),selected = "A" )
})
output$select_var3 <- renderUI({
selectizeInput('var3', 'Third selection (table filtered by...', sort(unique(Reference_TableType()$variable)),selected = "A" )
})
#Table with type and sum type
TableType_filtered <- reactive({ # <-- Reactive function here
TableType <- Reference_TableType() %>% filter ((Reference_TableType()$variable == input$var1) | (Reference_TableType()$variable == input$var2) | (Reference_TableType()$variable == input$var3))
TableType$sumtype = sum(TableType$type)
return(TableType)
})
#creating table table
filteredtable <- reactive({
data_x_sideone <- data_x_sideone() %>%
filter(data_x_sideone()$'_TYPE_' %in% TableType_filtered()$sumtype)
data_x_sidetwo <- data_x_sidetwo() %>%
filter(data_x_sidetwo()$'_TYPE_' %in% TableType_filtered()$sumtype)
table_table <- left_join(data_x_sideone(), data_x_sidetwo(),
by = c("type" = "type", "shop"="shop","area"="area","group"="group","pod"="pod", "division"="division","Subdivision"="Subdivision", "A"="A", "B"="B", "C"="C" ),
suffix = c("_S1", "_S2"))
#adding reference tables
table_table2 <- left_join(table_table, refshop,
by = c("shop"="shop"))
table_table3 <- left_join(table_table2, refarea,
by = c("area"="area"))
table_table <- table_table3 %>% slice(1:10)
return(table_table)
})
#visualisation of filtered table table
#table table created for extraction
tabextractionall <- reactive({ # <-- Reactive function here
data_x_sideone <- data_x_sideone() %>%
filter(data_x_sideone()$'_TYPE_' %in% TableType_filtered()$sumtype)
data_x_sidetwo <- data_x_sidetwo() %>%
filter(data_x_sidetwo()$'_TYPE_' %in% TableType_filtered()$sumtype)
table_table <- left_join(data_x_sideone(), data_x_sidetwo(),
by = c("type" = "type", "shop"="shop","area"="area","group"="group","pod"="pod", "division"="division","Subdivision"="Subdivision", "A"="A", "C"="C", "B"="B" ),
suffix = c("_S1", "_S2"))
return(table_table)
})
output$table7 <- renderTable({ filteredtable() })
output$dl7 <- downloadHandler(
filename = function(){"tableFiltered.csv"},
content = function(fname){
write.csv(tabextractionall(), fname)
})
}
shinyApp(ui = ui, server = server)
在您的代码中,完成以下分配后:
data_x_sideone <- data_x_sideone() %>%
filter(data_x_sideone()$'_TYPE_' %in% TableType_filtered()$sumtype)
data_x_sidetwo <- data_x_sidetwo() %>%
filter(data_x_sidetwo()$'_TYPE_' %in% TableType_filtered()$sumtype)
table_table <- left_join(data_x_sideone(), data_x_sidetwo(),
by = c("type" = "type", "shop"="shop","area"="area","group"="group","pod"="pod", "division"="division","Subdivision"="Subdivision", "A"="A", "C"="C", "B"="B" ),
suffix = c("_S1", "_S2"))
变量data_x_sideone
和datax_sidetwo
已覆盖反应性函数data_x_sideone()
和data_x_sidetwo()
,因此您不能再在左联接中使用这些函数。