Shinyサーバのforループで問題が発生しましたが、今までにどのように修正するのか誰も気づくことができません。私はこれを数日間は続けてきましたが、まだ進歩はありませんでした。長い話をすると、次のコードを見てください。私はGoogle Financeからデータを取得しようとしていて、平滑化された分散を計算しました。Shinyの内部ループ機能のために
stock2 <-
reactive(
getSymbols(
toupper(input$ticker2),
from = as.Date(input$date2[1]) - 150,
to = input$date2[2],
src = "google",
auto.assign = F
)
)
stock3 <- reactive(as.data.table(stock2()))
stock <- reactive(as.data.frame(stock3()))
stock.return <- reactive(diff(log(stock()[, 5])))
stock.mu <- reactive(mean(stock.return()))
stock.var <- reactive((stock.return() - stock.mu())^2)
stock.var.smoothed <- reactive(rep(0, length(stock.return())))
上記のコードは完全にうまく動作し、私はそれをテストしました。
問題は次のコードなので、計算に基づいてベクトルを割り当てたいが、それを行う正しい方法がわからない。
stock.var.smoothed <- reactive({
for (i in 2:length(stock.var())) {
stock.var.smoothed[1] <<- stock.var()[1]
stock.var.smoothed[i] <<-
(1 - input$alpha) * stock.var.smoothed()[i - 1] + input$alpha * stock.var()[i]
}
})
forループはまったく機能しません。 エラーコードは
エラーです:タイプのオブジェクトの閉鎖は「
subsettableはありませんが、私はすでに(使用)関数内の変数のために。だから私はそれをどのように修正するのか分かりません。
ところで、私はまた、次のコード
for (i in 2:length(stock.return())) {
stock.momentum.smoothed[1] <- reactive(stock.momentum()[1])
stock.momentum.smoothed[i] <-
reactive((1 - input$beta) * stock.momentum.smoothed()[i - 1] + input$beta * stock.return()[i])
}
エラーコードがアクティブ反応コンテキストなしで許可されていない
動作である試しました。 (あなたは反応式やオブザーバーの中からのみ行うことができたことをしようとしました)
何か助けてもらえたらうれしいです。ありがとうございました!
'stock.var.smoothed'は、「リアクティブ」オブジェクトです。言い換えれば、それは関数であり、Rが正しく言うように、それをサブセット化することはできません。あなたはそれを*呼び出す必要があり、結果をサブセット化する必要があります。 –
お返事ありがとうございます。それをどう呼ぶか教えてください。私は完全に空白です。 – Arthur
または、Shinyのベクトルのforループをどのように書くことができますか? – Arthur