2

データ ファイル (input$dataset) を選択できるアプリを構築しようとしています。次に、前の列の日付と時刻をフォーマットする新しい datetime 列を追加して、ggplot2 でプロットを作成します。

以前はバッチ スクリプトと Rstudio で機能していた「within」を使用します。しかし今、私はこのエラーメッセージを受け取ります:

クラス「リアクティブ」のオブジェクトに適用される「内」に適用可能なメソッドはありません

このメソッドをリアクティブ オブジェクトに適用するにはどうすればよいですか? 別のコマンドを使用する必要がありますか? cbind? ddply?

  datos=reactive({
    read.csv(input$dataset,header=T,sep=";",na.strings="-99.900")
    within(datos, datetime <- as.POSIXct(paste(FECHA,H_SOLAR),format = "%y/%m/%d %H:%M:%S"))        
  })

前もって感謝します

編集:

以下の回答に従って、リアクティブ ソースを変更できないことを理解しています。たとえば、データ フレームに列を追加します。ポイントは、この方法で ggplot を使用したいということです (古い R スクリプトを適応させます):

p=ggplot(datos(),aes_string(x="datetime", y=input$var,colour="as.character(stat_id)")) +
      geom_line()  
  }

では、どのようにdatetimeをdatosに追加すればよいでしょうか? たぶん、datos と datetime をマージする新しいリアクティブ ソースとして datos2 を作成しますか?

EDIT 2 完全なコードを github https://github.com/pacomet/gitに追加しました

4

2 に答える 2

2

データファイルを直接変更することはできません。これは、ユーザー入力 (この場合はデータ ファイルの選択) 以外では変更できないリアクティブ ソースです。

あなたには2つの選択肢があります(私が知っている):

1) 再フォーマットされた日付を保持する新しいオブジェクトを作成します。

NewDate<-reactive({ as.POSIXct(paste(FECHA,H_SOLAR),  
            format = "%y/%m/%d %H:%M:%S")})

次にNewDate()、グラフの変数として使用します。

2) グラフを作成する関数内で日付形式を変更します。例えば

plot(x~as.POSIXct(paste(FECHA,H_SOLAR),format="%y/%m/%d %H:%M:%S"),   
      data=datos())

これはやや似た問題です:リアクティブdata.frameのフォーマット

EDIT 編集された質問への回答 - ここに更新された回答があります。

私はあまり知りませんggplotが、問題がこれをすべて1つdata.frameにすることである場合、次のようなことをしたいかもしれません:

datos=reactive({read.csv(input$dataset,header=T,sep=";",na.strings="-99.900"))} 
NewDate<-reactive <- ({as.POSIXct(paste(FECHA,H_SOLAR),  
   format = "%y/%m/%d %H:%M:%S" )})  
datos2<-reactive({ data.frame(datos(),NewDate() })

次に、 in を使用datos2()してみてくださいggplot-必要なものが得られるはずです。

于 2013-12-05T14:52:59.687 に答える