2016-06-14 2 views
0

Shinyに構文の問題があります。私は、入力データが私のserver.Rスクリプトで先に作成された反応性データフレームUpdate_df1であるループで非線形回帰を実行したいと思います。出力は予測値を含むデータフレームとなり、次にUpdate_df1リアクティブデータフレームに追加してFinal_dfを作成します。以下は私が働くことができないserver.Rスクリプトの一部です。私の問題をどのように処理できるのか誰でも知っていますか?Shinyの反応的なデータフレームを持つループで回帰を実行

更新

Age<-reactive({ 
    prediction<- data.frame(Update_df1()$Site_ID) 
    prediction$f_Age <- NA 
    colnames(prediction)<- c("Site_ID", "f_Age") 
    for(id in unique(Update_df1()$Site_ID)){ 
    lm_Age<- try(nlsLM(NEP~offset + A*(1-exp(k*Stand_Age)), data = Update_df1()[ Update_df1()$Site_ID != id,], 
         start = list(A= 711.5423, k= -0.2987, offset= -444.2672), 
         lower= c(A = -Inf, k = -Inf, offset= -1500), control = list(maxiter = 500), weights = 1/Uncert), silent=TRUE) 
    prediction$f_Age[prediction$Site_ID == id] <- predict(object = lm_Age, newdata = Update_df1()[Update_df1()$Site_ID == id,]) 
    }%>% as.data.frame() 
}) 

Final_df<-reactive({ 
    data.frame(Update_df1(), Age()) 
}) 

私が得たエラーメッセージがWarning: Error in data.frame: arguments imply differing number of rows: 126, 0です。データフレームAgeは空のようです。

+0

あなたは 'Age()'の中であまりにも多くのことをやっているので、小さな塊に分解することをお勧めします。また、反応式で '.'を使わないでください。 –

+0

'lm.age'オブジェクトと' f_age'変数の作成はお互いに依存していますので、どのように反応式を分解することができるかはわかりません。何か案は? – SimonB

+0

同じループ内に作成されていることを意味します。 – SimonB

答えて

0

私は周りの道を見つけたと思う。

Age<-reactive({ 
    prediction<- data.frame(Update_df1()$Site_ID) 
    prediction$f_Age <- NA 
    colnames(prediction)<- c("Site_ID", "f_Age") 
    for(id in unique(Update_df1()$Site_ID)){ 
    lm_Age<- try(nlsLM(NEP~offset + A*(1-exp(k*Stand_Age)), data = Update_df1()[ Update_df1()$Site_ID != id,], 
         start = list(A= 711.5423, k= -0.2987, offset= -444.2672), 
         lower= c(A = -Inf, k = -Inf, offset= -1500), control = list(maxiter = 500), weights = 1/Uncert), silent=TRUE) 
    prediction$f_Age[prediction$Site_ID == id] <- predict(object = lm_Age, newdata = Update_df1()[Update_df1()$Site_ID == id,]) 
    } 
    return(prediction) 
}) 

Final_df<-reactive({ 
    data.frame(Update_df1(), Age()) 
}) 
関連する問題