【发布时间】:2017-04-04 20:32:52
【问题描述】:
我试图让这个反应返回一个我可以用情节操作的数据框。
avghour <- reactive({
result <- data.frame()
start_date <- as.numeric(unlist(input$i6[1]))
end_date <- as.numeric(unlist(input$i6[2]))
mkw <- maxkwpeakdates[(maxkwpeakdates >= start_date & maxkwpeakdates <=
end_date) & !is.na(maxkwpeakdates), ]
mkw <- na.omit(mkw)
mopkw <- maxonpeakkwdates[(maxonpeakkwdates >= x &
maxonpeakkwdates <= y) & !is.na(maxonpeakkwdates),
]
mopkw <- na.omit(mopkw)
mkwhour <- data.frame(as.data.frame(apply(mkw, 2, hour)))
mopkwhour <- as.data.frame(apply(mopkw, 2, hour))
mkwhour <- as.data.frame(sapply(mkwhour, tabulate, 24))
mopkwhour <- as.data.frame(sapply(mopkwhour, tabulate, 24))
mkwhour <- as.data.frame(apply(mkwhour, 1, mean))
mopkwhour <- as.data.frame(apply(mopkwhour, 1, mean))
result <- data.frame(mkwhour, mopkwhour)
colnames(result) <- c("1", "2")
return(result)
})
我希望能够绘制结果数据框。当我调试我的应用程序时,结果发现 avghour 被保存为函数而不是数据框。反应式所需的值迫使反应式正确更新,但我无法将结果保存为数据框。我是否正确使用了反应式?我需要以另一种方式这样做吗?
更新
I have changed my server code to be like this:
server <- function(input, output) {
averages <- reactiveValues(hourly = avghour(input$'i6'[1], input$'i6'[2]))
observeEvent(input$submit,{
averages$hourly <- avghour(input$'i6'[1], input$'i6'[2])
})
output$"1" <- renderPlotly({
plot_ly() %>%
add_trace(type = 'bar',
data=averages$hourly,
x=~'1',
y=~'2')
})
}
getHourlyAverage 和我之前的函数一样。现在我收到error: operation not allowed without an active reactive context. 我如何在用户输入中使用observeEvent 和reactiveValues?
【问题讨论】:
-
您是否以正确的方式调用响应式?您需要使用
avghour()调用它,而不是avghour。 -
是的,当我在情节中引用它时,我使用的是 avghour()$columnName。
-
我的回答有帮助吗?
-
会看看...乍一看还不错。
getHourlyAverage长什么样子。 -
我看不到
getHourlyAverage“和以前一样”。
标签: r dataframe shiny reactive-programming plotly