【问题标题】:How to modify and manipulate a shiny reactive object/data frame如何修改和操作闪亮的反应对象/数据框
【发布时间】:2019-08-19 13:33:35
【问题描述】:

我有一个非常简单的 csv 文件。

> head(data)
         X  Y
1 1/1/1900  1
2 1/2/1900  2
3 1/3/1900  4
4 1/4/1900  8
5          16

我有一个闪亮的应用程序,可以在用户上传文件后绘制该文件

这是代码

library(shinydashboard)


ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(
    fileInput("file1", "Choose CSV File",
              multiple = TRUE,
              accept = c("text/csv",
                         "text/comma-separated-values,text/plain",
                         ".csv")),
    sidebarMenu(
      menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
      menuItem("Widgets", tabName = "widgets", icon = icon("th"))
    )
  ),
  dashboardBody(
    tabItems(
      # First tab content
      tabItem(tabName = "dashboard",
              fluidRow(
                box(plotOutput("plot1", height = 250))
              )
      ),

      # Second tab content
      tabItem(tabName = "widgets",
              h2("Widgets tab content")
      )
    )
  )
)

server <- function(input, output) {
  options(shiny.maxRequestSize=100*1024^2)


  data <- reactive({
    inFile <- input$file1
    if(!is.null(inFile)){
      read.csv(inFile$datapath, header = TRUE, stringsAsFactors = FALSE)    
    }
  })


  output$plot1 <- renderPlot({
    req(data())


    plot(data()$X, data()$Y)
  })
}

shinyApp(ui, server)

我的问题是如何修改反应对象 data()?,假设我想使用 as.Date 命令将列 X 更改为日期列,然后我想删除第 5 行,因为它有一个空值然后将Y列乘以10,然后在我完成所有这些之后绘制图表?感谢您的帮助

【问题讨论】:

  • 您可以将其分配给另一个对象,对其进行修改和绘制。例如:dat &lt;- data(); dat$X &lt;- as.Date(dat$X)...plot(dat$X, dat$Y)
  • 感谢一百万的工作就像一个魅力,如果你想把它作为答案,我会接受它,再次感谢:)

标签: r shiny


【解决方案1】:

您可以将反应对象分配给变量。

data <- reactive({
  inFile <- input$file1
  if(!is.null(inFile)) {
     read.csv(inFile$datapath, header = TRUE, stringsAsFactors = FALSE)    
  }
})

dat <- data()
dat$X <- as.Date(dat$X)
dat <- dat[-5,]
dat$Y <- dat$Y * 10

output$plot1 <- renderPlot({    
  plot(dat$X, dat$Y)
})

【讨论】:

    猜你喜欢
    • 2013-12-22
    • 2016-02-10
    • 2020-04-22
    • 1970-01-01
    • 2022-01-12
    • 2017-06-28
    • 2019-10-20
    • 2016-02-09
    • 2021-08-07
    相关资源
    最近更新 更多