Весьма вероятно, что dplyr
вызывает беспорядок.
library(dplyr)
# Attaching package: ‘dplyr’
#
# The following objects are masked from ‘package:xts’:
#
# first, last
#
# The following objects are masked from ‘package:stats’:
#
# filter, lag <------------------------------------------- !!!
#
# The following objects are masked from ‘package:base’:
#
# intersect, setdiff, setequal, union
Вы можете внимательно прочитать эти стартовые сообщения и добавить stats::
перед функцией в этом случае (посмотрите ?lag
и вы ' Увидим список альтернатив).
Сравнение:
cbind(stats::lag(x), stats::lag(x, k=2), stats::lag(x, k=-1, na.pad=F))
# stats..lag.x. stats..lag.x..k...2. stats..lag.x..k....1..na.pad...F.
# 2020-04-21 NA NA 2
# 2020-04-22 1 NA 3
# 2020-04-23 2 1 4
# 2020-04-24 3 2 5
# 2020-04-25 4 3 6
# 2020-04-26 5 4 7
# 2020-04-27 6 5 8
# 2020-04-28 7 6 9
# 2020-04-29 8 7 10
# 2020-04-30 9 8 NA
cbind(dplyr::lag(x), dplyr::lag(x, k=2), dplyr::lag(x, k=-1, na.pad=F))
# dplyr..lag.x. dplyr..lag.x..k...2. dplyr..lag.x..k....1..na.pad...F.
# 2020-04-21 NA NA NA
# 2020-04-22 1 1 1
# 2020-04-23 2 2 2
# 2020-04-24 3 3 3
# 2020-04-25 4 4 4
# 2020-04-26 5 5 5
# 2020-04-27 6 6 6
# 2020-04-28 7 7 7
# 2020-04-29 8 8 8
# 2020-04-30 9 9 9
xts::lag.xts
на самом деле является методом пакета xts
, который сообщает stats::lag
как иметь дело с временными рядами. Однако вы можете использовать его напрямую, как вы уже обнаружили. Оба результата идентичны.
cbind(lag.xts(x), lag.xts(x, k=2), lag.xts(x, k=-1, na.pad=F))
# lag.xts.x. lag.xts.x..k...2. lag.xts.x..k....1..na.pad...F.
# 2020-04-21 NA NA 2
# 2020-04-22 1 NA 3
# 2020-04-23 2 1 4
# 2020-04-24 3 2 5
# 2020-04-25 4 3 6
# 2020-04-26 5 4 7
# 2020-04-27 6 5 8
# 2020-04-28 7 6 9
# 2020-04-29 8 7 10
# 2020-04-30 9 8 NA
Примечание: Возможно, вы автоматически загружаете некоторые пакеты с помощью манипулируемого файла .rprofile
. Я бы порекомендовал не делать таких вещей и удалять там звонки library/require
. Другая возможность состоит в том, что вы загружаете другой пакет, который использует dplyr
в качестве зависимости (например, `tidyverse '). В любом случае, во всех случаях вышеприведенное решение работает (но утомительно каждый раз выяснять, какая базовая функция R была перезаписана каким-то небрежным пакетом!).