光沢のある反応式で計算された変数の値に出力が依存する光沢のあるアプリを書いています。代わりに、私は次のような単純なアプリで私の問題を再現していると信じて、実際のアプリ再現:光沢のあるif文の反応式を使用
ui.R file:
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Illustrating problem"),
sidebarPanel(
numericInput('id1', 'Numeric input, labeled id1', 0, min = 0, max = 100, step =5)
),
mainPanel(
h4('You entered'),
verbatimTextOutput("oid1"),
verbatimTextOutput("odic")
)
))
server.R file
library(shiny)
shinyServer(
function(input, output) {
output$oid1 <- renderPrint({input$id1})
x<-reactive({5*input$id1})
if (x()>50) output$oid2<-renderPrint({"You entered a number greater than 10"})
else output$oid2<-renderPrint({"You entered a number less than or equal to
10"})
}
)
を、私はこのようにそれを実行すると、私はエラーを取得する:.getReactiveEnvironment()$currentContext()
で エラー: `
Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)
私はif文を変更する場合:if (x>50)
...その後、私はエラーを取得する:
Error in x > 50 : comparison (6) is possible only for atomic and list types
私はif文を変更する場合:if (reactive({(x>50)}))
...その後、私は、エラーメッセージが表示されます。
Error in if (reactive({ : argument is not interpretable as logical
私は非常に光沢のある作品はイベントドリブンモデルに従ってベースという任意のヘルプ
(私は役に立たないUI要素の束を取り出し)しかし、あなたは確かに出力文をオブザーバーの中に置くことができます/反応的です。しかし、しないでください。 –
あなたの説明をありがとう。私の問題は、私の実際のアプリケーションでは、if else文の中にたくさんのコマンドがあり、単なるrenderPrintコマンドではないということです。どのようにそれを行う上の任意のアイデアですか? – MSR
上記の編集を参照してください。 –