簡體   English   中英

有條件地在數據幀中對閃亮的新變量進行子集化和計算

[英]Conditionally subsetting and calculating a new variable in dataframe in shiny

我試圖在Shiny中的數據幀中計算一個新變量,該變量是在另一個變量上有條件地計算的。

這是我正在嘗試做的一個小例子:

mydata <- data.frame(cbind(x = 1, y = 1:10))
value <- 10 #from user input
mydata$z[mydata$y >= 5] <- mydata$y[mydata$y >= 5] + value
mydata$z[mydata$y < 5] <- mydata$y[mydata$y < 5] - value

這是我的ui.R文件:

#Library
library("shiny")

# Define UI for miles per gallon application
shinyUI(pageWithSidebar(

  # Application title
  headerPanel("Test"),

  sidebarPanel(
    numericInput("value", "Enter Value:", 10)
  ),

  mainPanel(
    tableOutput("table")
  )
)
)

這是我的server.R文件:

#Libraries
library(shiny)

#Load Data
mydata <- data.frame(cbind(x = 1, y = 1:10))

# Define server logic
shinyServer(function(input, output) {

  mydata$z[mydata$y >= 5] <- reactive({
    mydata$y + input$value
  })

  mydata$z[mydata$y < 5] <- reactive({
    mydata$y - input$value
  })

  output$table <- renderTable({
    mydata
  })

})

有了這個閃亮的代碼,我收到以下錯誤:

mydata $ z [mydata $ y> = 5] < - reactive({:向量分配中的無效類型/長度(閉包/ 0)錯誤

我已經嘗試了不同的子集和分配方法,但我被卡住了。 非常感謝您的幫助!

我不確定你是否清楚reactive()正在做什么......我建議你閱讀一些更有shiny文檔,特別是看看這些例子 - '03_reactivity'可能是一個好的。

無論如何,這里是您的代碼如何適應您想要的。 這不是最好的方法,但希望它能幫助您了解目前存在問題的地方。

我只更改了server.R文件,並沒有更改任何代碼來構建新變量。 構造新變量的代碼進入reactive函數 - 然后需要調用函數來實際創建表。

#Libraries
library(shiny)

#Load Data
mydata <- data.frame(cbind(x = 1, y = 1:10))

# Define server logic
shinyServer(function(input, output) {

  newdata <- reactive({
    mydata$z[mydata$y >= 5] <- mydata$y[mydata$y >= 5] + input$value
    mydata$z[mydata$y < 5] <- mydata$y[mydata$y < 5] - input$value
    return(mydata)
  })

  output$table <- renderTable({
   newdata()
  })

})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM