2017-09-01 7 views
2

tzのデフォルト値はUTCで、ymdの値はtzでした。変更がいつ行われたのか正確には分かりませんが、1.5ではデフォルトはUTCでしたが、1.5.8ではデフォルトは今度はNULLです。潤滑油のymdのデフォルト値の変更方法

これは私がPOSIXctオブジェクトを持つに依存しているが、今Dateを持っている私のコードの多くを壊すDateオブジェクトへのPOSIXctオブジェクトからymdの出力を変更します。これを下位互換にする便利な方法はありますか、これに頼っていた古いコードにすべてtz='UTC'を追加する必要がありますか?

答えて

2

library(lubridate) 
ymd2 = function(x){ 
    ymd_hms(paste(x, "00:00:00")) 
} 

ymd2("2017/3/4") 
#[1] "2017-03-04 UTC" 

class(ymd2("2017/3/4")) 
#[1] "POSIXct" "POSIXt" 
+0

tz = "UTC"がええ、私はymd2 <-function(x)はYMD(X、TZ = 'UTC' 'のようなラッパーを作ることについて考えているため、デフォルトがまだあるymd_hmsymdを置き換えるためにラッパーを書きます) 'ymd'を使うコードのすべてでこれを行うことを必要としない何かを望んでいます。 –

+0

さて、ラッパーに 'ymd'という名前をつけて、名前衝突を避けるために' tz'引数を使って 'lubridate :: ymd'を呼び出すと...既存のコードで' ymd'呼び出しをすべて置き換える必要はありません、関数をロードするだけです。さもなければ古いバージョンの 'lubridate'を使っているかもしれません。その場合、 'packrat'パッケージが便利かもしれません。 – mikeck

+1

また、 'options'にデフォルトのtzオプションを取得する機能リクエストを投稿することもできます:https://github.com/tidyverse/lubridate/issues。私はあなたがこのバージョンの互換性の問題を持つ唯一の人だとは思わない。 – mikeck

関連する問題