【问题标题】:Subsetting Dataframe within ShinyShiny 中的子集数据框
【发布时间】:2018-09-19 04:29:04
【问题描述】:

如果我使用 fileInput 从 Shiny 导入数据集,我怎么能以反应形式创建它,我可以创建导入数据帧的子集并最终对子集数据帧的不同行执行计算?我可以将子集数据帧存储为 reactiveValues(),然后在反应场景之外使用它们吗?

我将如何完成类似下面的代码,这将是一个普通的 R 脚本,它可以成功运行?

df <- read.table(file.choose(), header=TRUE, sep=",")
attach(df)
df <- df[, c(1, 50:75)]
df[1] <- time

我知道我可以使用 fileInput 完成以下任务,但我只是不确定如何在闪亮中对此类内容进行子集化并使其在以下场景中可用 renderPlot 和其他人。 reactivereactiveValues 是实现这一目标的最佳策略吗?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    这是您要找的东西吗?

    library(shiny)
    ui <- fluidPage(
      titlePanel("Uploading Files"),
      sidebarLayout(sidebarPanel(
        fileInput(
          "file1",
          "Choose CSV File",
          multiple = F,
          accept = c("text/csv", "text/comma-separated-values,text/plain", "text")
        ),
        uiOutput("selectbox")
      ),
      mainPanel(tableOutput("contents")))
      )
    

    server <- function(input, output) {
      data <- reactive({
        req(input$file1)
        df <- read.csv(file = input$file1$datapath,
                 header = T,
                 sep = "\t")
      })
    
      output$selectbox <- renderUI({
        colnam <- colnames(data())
        selectInput("colsel",
                    "Columns Selected",
                    c("Please select" = "", colnam),
                    multiple = T)
      })
    
      output$contents <- renderTable({
        data()[, c(req(input$colsel))]
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 不完全。这将是一个单一的文件输入,输入文件将是一个单一的数据帧,然后我想从一个较大的输入文件创建较小的子集数据帧,所有这些都是反应性的,我可以通过他们指定和调用行号和列号。理想情况下,我希望能够使用它们进行一些计算并能够在反应性场景中使用它们
    • 好的。用语言很难理解。你能更新你在 Shiny 端尝试过的问题吗?
    猜你喜欢
    • 2018-10-06
    • 2014-06-16
    • 2018-07-28
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 2017-02-14
    • 1970-01-01
    相关资源
    最近更新 更多