6

postgresqlから一連の日付を取得しましたが、正しく表示されます。

[1] "2007-07-13" "2007-07-14" "2007-07-22" "2007-07-23" "2007-07-24"
[6] "2007-07-25" "2007-08-13" "2007-08-14" "2007-08-15" "2007-08-16"
etc.

次に、それらに対してループを実行して、他のデータセットをフェッチするための新しいSQL文を作成します(はい、私が何をしているのかはわかっていますが、データベースサーバーですべての処理を行うことはできませんでした)

だから私は試しました

for(date in geilodates)
 mapdate(date,geilo)
Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  invalid input syntax for type date: "13707"
LINE 1: ...id_date_location where not cowid is null and date='13707' or...

mapdateは私が書いた関数であり、その中での日付の使用は

sql=paste('select * from gps_coord where cowid=',cowid," and date='",date,"'",sep='')

したがって、SQLを一緒に貼り付けようとする前に、Rがフォーマットされた日付を整数表現にサイレントに変換したことが発生しました。

日付の元のテキスト表現を取得するにはどうすればよいですか?私は試した

for(date in geilodates){
  d=as.Date(date,origin="1970-01-01")
  mapdate(d,geilo)
}
Error in charToDate(x) : 
character string is not in a standard unambiguous format

そして、日付文字列を作成する(または変数をリストするときに取得する文字列として日付を「提供」する)他の関数を見つけることができませんでした

4

2 に答える 2

7

私を正しい方向に向けてくれたwush978に感謝します。結局、私は次のことをしなければなりませんでした。

for(d in geilodates){
 date=format(as.Date(d,origin="1970-01-01"))
 mapdate(date,geilo)
}

何らかの理由で、ループ内では「date」変数は整数と見なされていたため、明示的に日付に変換してからフォーマットする必要がありました...

于 2013-01-24T09:10:54.847 に答える
5

試す?format.Date

x <- Sys.Date()
class(x)
class(format(x))

Rでは、クラスのデータはDate数値型です。文字列として表す公式の方法Dateは、を呼び出すことformatです。

あなたのケースでの形式dateが定義されているとは思えないので、paste 予期しないことが起こります。

たぶん、あなたはRにあなたがDateにどのフォーマットを望むかを教える代わりformat(x, "%Y-%m-%d")にあなたの関数を入れる必要があります。pastedate

于 2013-01-24T08:44:33.637 に答える