私は何時間もこの問題を抱えてきました。私は実際のユースケースのより単純なバージョンを作成して、問題をデバッグできるかどうかを確認しようとしましたが、まだ問題があります。リアクティブループin R Shiny
私の光沢のあるアプリは以下の通りです。ユーザーからの入力を受け取り、しきい値を満たすまで計算を実行してから、リストに値を収集します。これはいくつかの反復(この例では10回)で行い、次にこれらの値のヒストグラムをプロットします。
私は取得しています特定のエラーが
Warning: Error in : evaluation nested too deeply: infinite recursion/options(expressions=)?
を言う私は私のエラーは、私がx.new
を使用している方法に関連していると思いますが、私は違っそれをコーディングする方法を見つけ出すことはできません。
# install.packages('shiny')
library(shiny)
ui <- fluidPage(
headerPanel('Title Here'),
sidebarPanel(
numericInput('x.qty', 'Pick a number', 3, 1, 10)),
mainPanel(plotOutput('valueplot'))
)
server <- function(input, output, session) {
results <- reactive({
x.list <- list()
for (i in 1:10){
x.new <- reactive({input$x.qty * sample(1:10, 1)})
repeat{
if (x.new() > 20){
x.list <- c(x.list, x.new())
results <- x.list
break
} # end if loop
x.new <- reactive({x.new() * sample(1:10, 1)})
} # end repeat
} # end for loop
results
})
output$valueplot <- renderPlot({hist(as.numeric(results()))})
}
shinyApp(ui = ui, server = server)
ここでの基本的な問題は、 'x.new()'が複数回定義された反応性であるため、光沢が何をすべきか分からないということです。おそらく反応変数を使用するか、2つの異なる名前を使用して、これを避けるためにこれを書き直せますか? –
問題は自分自身を参照する必要があるということです。したがって、ユーザーは 'x.qty'に対して3を選択します...' x.new'は3に乱数...例えば2を掛けます。これは20を超えていないので、 'x.new'の新しい値を6にして、別の数値を乗算したい。 – pyll