活性元素和ggvis
Reactive elements and ggvis
我在使用反应元素显示 ggvis 图时遇到问题。这是我收到的错误:.getReactiveEnvironment()$currentContext()
中的错误:
Operation not allowed without an active reactive context.
(你试图做一些只能从反应式表达式或观察者内部完成的事情。)
我看了其他帖子,所以我想我需要在某个地方使用 observe({}),但我不确定在哪里。我试过了
observe({ df <- CreateDF(input$PMNT, input$Periods, input$Rate) )}
当我这样做时,图表显示了,但是当我更改输入值时,图表没有更新。
感谢您提供的任何见解。
相关代码如下:
server.R:
library(ggvis)
library(dplyr)
source("functions.R")
shinyServer(function(input, output) {
input_PMNT <- reactive(input$PMNT)
input_Periods <- reactive(input$Periods)
input_Rate <- reactive(input$Rate)
observe(
df <- CreateDF(input$PMNT, input$Periods, input$Rate)
)
df %>% ggvis(x = ~time, y = ~pv) %>% layer_bars(width=1, fill := "#fff8dc") %>%
add_axis("x", title = "Period") %>%
add_axis("y", title = "Value") %>%
bind_shiny("AnPlot", "AnPlot_ui")
})
ui.R:
library(shiny)
library(ggvis)
library(dplyr)
shinyUI(fluidPage(
titlePanel("Annuity Calculator"),
sidebarLayout(
sidebarPanel(
radioButtons("AnType",
"Annuity Type:",
list("Level", "Geometric", "Arithmetic"),
selected="Level")
),
mainPanel(
numericInput("PMNT", "Enter the regular payment:", min=0, value=100),
numericInput("Periods", "Enter the number of periods:", min=0, value=10),
numericInput("Rate", "Enter the interest rate, as a decimal:", value=0.07),
ggvisOutput("AnPlot"),
uiOutput("AnPlot_ui")
)
)
))
表达式 observe({ df <- CreateDF(input$PMNT, input$Periods, input$Rate) )}
对我来说没有多大意义,因为 df
仅在观察者内部可见,而观察者不会 return 任何东西。相反,您可以尝试 df <- reactive( CreateDF(input$PMNT, input$Periods, input$Rate) )
.
我在使用反应元素显示 ggvis 图时遇到问题。这是我收到的错误:.getReactiveEnvironment()$currentContext()
中的错误:
Operation not allowed without an active reactive context.
(你试图做一些只能从反应式表达式或观察者内部完成的事情。)
我看了其他帖子,所以我想我需要在某个地方使用 observe({}),但我不确定在哪里。我试过了
observe({ df <- CreateDF(input$PMNT, input$Periods, input$Rate) )}
当我这样做时,图表显示了,但是当我更改输入值时,图表没有更新。
感谢您提供的任何见解。
相关代码如下:
server.R:
library(ggvis)
library(dplyr)
source("functions.R")
shinyServer(function(input, output) {
input_PMNT <- reactive(input$PMNT)
input_Periods <- reactive(input$Periods)
input_Rate <- reactive(input$Rate)
observe(
df <- CreateDF(input$PMNT, input$Periods, input$Rate)
)
df %>% ggvis(x = ~time, y = ~pv) %>% layer_bars(width=1, fill := "#fff8dc") %>%
add_axis("x", title = "Period") %>%
add_axis("y", title = "Value") %>%
bind_shiny("AnPlot", "AnPlot_ui")
})
ui.R:
library(shiny)
library(ggvis)
library(dplyr)
shinyUI(fluidPage(
titlePanel("Annuity Calculator"),
sidebarLayout(
sidebarPanel(
radioButtons("AnType",
"Annuity Type:",
list("Level", "Geometric", "Arithmetic"),
selected="Level")
),
mainPanel(
numericInput("PMNT", "Enter the regular payment:", min=0, value=100),
numericInput("Periods", "Enter the number of periods:", min=0, value=10),
numericInput("Rate", "Enter the interest rate, as a decimal:", value=0.07),
ggvisOutput("AnPlot"),
uiOutput("AnPlot_ui")
)
)
))
表达式 observe({ df <- CreateDF(input$PMNT, input$Periods, input$Rate) )}
对我来说没有多大意义,因为 df
仅在观察者内部可见,而观察者不会 return 任何东西。相反,您可以尝试 df <- reactive( CreateDF(input$PMNT, input$Periods, input$Rate) )
.