両方のパッケージlubridateおよびdata.tableにはisoweekという名前の関数があります。R - isoweekのデフォルトパッケージは、使用方法によってどうして変わるのですか?
dplyrのmutateから "isoweek"を呼び出すと、デフォルトでdata.table :: isoweekが呼び出されるように見えます。たとえば、このコードでは、2014-12-29のISOWEEKは「0」です。
require(tidyverse)
require(magrittr)
require(lubridate)
require(data.table)
DATES <-data.frame(
DATE= seq(
as.Date("2014-12-22"), as.Date("2015-02-02"), by = "week")) %>%
mutate(ISOYEAR = isoyear(DATE),
LUBRIYEAR = lubridate::isoyear(DATE),
ISOWEEK = isoweek(DATE),
LUBRIWEEK = lubridate::isoweek(DATE),
DTWEEK3 = data.table::isoweek(DATE))
ただし、isoweekを単独で呼び出すと、lubridate :: isoweekが呼び出されます。たとえば、 "0"の代わりに "1"を返します。
isoweek("2014-12-29")
学んだレッスン、私はいつも私が望むどのパッケージを指定しますが、なぜこのようなデフォルトのパッケージ変更を行うのだろうか?
おかげ
パッケージがロードされる順番に応じてパッケージが変更されます。最も簡単な解決法は、(i)冗長または重複するパッケージを少なくして作業すること、または(ii)常にライブラリ::/requireをロードすることではなく、常に '::'を使用することです。 – Frank
フランク:返事とチップをありがとう。私が理解していないことは、私のmutateでdata.table :: isoweekを使用するようにプログラムをデフォルト設定しますが、mutateの外で呼び出されたときにはlubridate :: isoweekを使用することです – Zoltan