Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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
RShiny-删除从dplyr链输出的透视表无关列_R_Function_Dplyr_Shiny - Fatal编程技术网

RShiny-删除从dplyr链输出的透视表无关列

RShiny-删除从dplyr链输出的透视表无关列,r,function,dplyr,shiny,R,Function,Dplyr,Shiny,目前正在使用来自dplyr的starwars数据集,并构建了一个RShiny Pivot表应用程序。当前,在呈现数据表输出时,它返回所有列和度量值对。例如,如果最终用户输入了2个度量值,2个函数聚合(单元格填充),它将从度量值和聚合函数总组合(2*2)返回4列。最终目标是能够仅将度量值与为其指定的聚合函数配对 因此,在本例中,您可以看到选中的行是hair\u color和skin\u color。所选列为高度和质量。选择的单元格填充(聚合函数)为平均值和中值。在这个RShiny应用程序中点击ru

目前正在使用来自
dplyr
starwars
数据集,并构建了一个RShiny Pivot表应用程序。当前,在呈现数据表输出时,它返回所有列和度量值对。例如,如果最终用户输入了2个度量值,2个函数聚合(单元格填充),它将从度量值和聚合函数总组合(2*2)返回4列。最终目标是能够仅将度量值与为其指定的聚合函数配对

因此,在本例中,您可以看到选中的行是
hair\u color
skin\u color
。所选列为
高度
质量
。选择的单元格填充(聚合函数)为
平均值
中值
。在这个RShiny应用程序中点击
runquery
,它将返回6列(#尺寸+(#度量*#聚合)=2+(2*2)=6。这将返回列
头发颜色
肤色
高度
质量
高度
质量

但是,我只希望它返回
头发颜色
肤色
身高
,和
体重中位数
(根据您在UI中看到的特殊顺序)

dplyr
链中的
mutate
语句中是否有一个特定的语句,或者我可以(最终)创建另一个函数来实现这一点

*注意:不查找硬编码示例,但如果“Inputed”列和“Inputed”聚合函数包含“xyz”(仅基于用户输入),则更多,然后保留/删除这些列

另外,我确实希望首先在dataframe中填充every measure-aggregate函数对,然后在最后找到一种方法来删除用户界面中不需要的列

非常感谢你的帮助

下面的代码片段

library(DT)
library(shiny)
library(shinydashboard)
library(dplyr)

ui <- function(request) {
  dashboardPage(
    dashboardHeader(title = "SW Pivot"),
    dashboardSidebar(
      actionButton("runit", "RUN QUERY"),
      hr(),
      
      h4(HTML("&nbsp"), "Select Table Rows"),
      uiOutput('rowSelect'),
      hr(),
      h4(HTML("&nbsp"), "Select Table Columns"),
      uiOutput('colSelect'),
      hr(),
      h4(HTML("&nbsp"), "Select Table Cell Fill"),
      uiOutput('aggSelect'),
      hr()
      
    ),
    dashboardBody(dataTableOutput("data"))
    
  )
}

data <- starwars

server<-shinyServer(function(input, output, session) {
  
  # Identify Measures, Dimensions, and Functions --------------
  
  dimensions <- colnames(data)[!sapply(data, is.numeric)]
  measures <- colnames(data)[sapply(data, is.numeric)]
  functions_string <- c(count = "length", 
                        mean = "mean", 
                        sum = "sum", 
                        median = "median", 
                        max = "max", 
                        min = "min")
  
  output$rowSelect <- renderUI({
    selectizeInput(
      inputId = "dimensions",
      label = NULL,
      multiple = TRUE,
      choices = dimensions,
      selected = c()
    )
  })
  
  output$colSelect <- renderUI({
    selectizeInput(
      inputId = "measures",
      label = NULL,
      multiple = TRUE,
      choices = measures,
      selected = c()
    )
  })
  
  output$aggSelect <- renderUI({
    selectizeInput(
      inputId = "funChoices",
      label = NULL,
      multiple = TRUE,
      choices = functions_string,
      selected = c()
    )
  })
  
  pivotData <- reactive({
    input$runit
    isolate({
      measuresVec <- input$measures
      dimensionsVec <- input$dimensions
      funsList <- lapply(input$funChoices, match.fun)
      names(funsList) <- input$funChoices
      
      pivotData <- data %>%
        group_by_at(vars(dimensionsVec)) %>%
        summarize_at(vars(measuresVec), funsList, na.rm = TRUE)
    })
    
    return(pivotData)
    
  })
  
  output$data <- renderDataTable({
    tabledata <- pivotData()
    datatable(tabledata)
  })
  
})

shinyApp(ui, server)
库(DT)
图书馆(闪亮)
图书馆(shinydashboard)
图书馆(dplyr)
用户界面