r - 我对 Shiny R 中的反应表有一些问题
问题描述
我正在尝试使用 R 中的闪亮创建仪表板,但我遇到了一些小问题
我有:
db
是我data.frame
的:
db$domain:chr,
db$date:chr,
db$value:num.
所以我创建了:
db_4 <- reactive({ subset(db,db$domain %in% input$domain &
db$date<=input$daterange[2] & db$date>=input$daterange[1]})
输入是:
input$domain: selectinput with multiple choices,
input$date: daterangeinput.
我正在尝试创建一个表,它给我 db$value 的总和,由 db$date 聚合。我试过类似的东西:
output$table2 <- rendertable ({aggregate(db_4()["value"], by=list(db_4()["date"]), sum) })
但我总是得到一张空桌子。
有人可以帮我解决这个小问题吗?
多谢
解决方案
我强烈建议您阅读这篇关于调试的文章。
在 Shiny 中,您可以browser()
在reactive
和函数中使用该render
函数。它应该可以帮助您定位问题(即:数据具有预期的结构)
似乎问题出在aggregate
函数上:db_4()["date"]
返回 a data.frame
,您需要一个向量。
解决方案:
library(shiny)
db <- data.frame(
domain = letters[1:3],
date = seq(
from = as.Date("2019-01-01"),
to = as.Date("2019-06-01"),
by = "1 months"
),
value = runif(12)
)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("domain", "Domain", choices = unique(db$domain)),
dateRangeInput("daterange", "Date",
min = min(db$date), max = max(db$date),
start = min(db$date), end = max(db$date))
),
mainPanel(
tableOutput("table2")
)
)
)
server <- function(input, output, session) {
db_4 <- reactive( {
subset(db,
db$domain %in% input$domain &
db$date<=input$daterange[2] &
db$date>=input$daterange[1]
)
})
output$table2 <- renderTable( {
req(db_4()) # Don't render table when db_4() is NULL
# Uncomment next line to check if everything goes as expected
#browser()
aggregate(
data.frame(value = db_4()$value),
by=list(date = as.factor(db_4()$date)),
sum
)
})
}
shinyApp(ui, server)
此外,我强烈建议您分享您的最小示例的代码,包括一些虚拟数据,以便可以立即复制粘贴。这将增加有人回答的机会。
推荐阅读
- python - 计算列中每一行的 len 并且只取一个尊重条件 Pandas Python
- javascript - Selenium Javascript Executor Click() 在实际点击页面之前搜索页面上的元素
- arrays - Powershell从foreach循环中的数组替换字符串
- c# - 2dArray 到 Json 字符串
- applepay - 设备库标识符是否随推送令牌而变化?
- php - 来自 WhereIn 的访问关系
- mongodb - 连接到另一个嵌套集合的 MongoDB 集合中的全文搜索
- android-recyclerview - 如何在 RecyclerView 中处理无效的 RealmList
- typescript - 如何在 Typescript 中检查二进制类型别名
- mysql - MySQL 8.0 行长度(8,126 对 65,535)