dplyr在变异内的滞后函数的奇怪行为

Ant*_*osK 6 r lag dplyr

我想它与那个故事有关:在加载dplyr包时改变stats :: lag的行为,但是lag当我尝试使用该default =选项时,我发现了一些奇怪的函数行为.

检查下面的简单命令

library(dplyr)

df = data.frame(mtcars)

df %>% mutate(lag_cyl = lag(cyl))
## it works with NA in first value (as expected)

df %>% mutate(lag_cyl = lag(cyl, default = 999))
## it works with a given value as default

df %>% mutate(lag_cyl = lag(cyl, default = cyl[1]))
## it DOESN'T WORK with the first value of the column as default

df %>% mutate(lag_cyl = dplyr::lag(cyl, default = cyl[1]))
## it works when specifying dplyr::

val = df$cyl[1]
df %>% mutate(lag_cyl = lag(cyl, default = val))
## it works when I assign the first value of the column to a variable name
Run Code Online (Sandbox Code Playgroud)

这只是statsdplyr包之间的冲突吗?

RDa*_*vey 3

我可以确认它df %>% mutate(lag_cyl = lag(cyl, default = cyl[1]))适用于 dplyr 版本 0.8.0.1。

如果它在指定时起作用,dplyr::lag则表明另一个库正在屏蔽该函数。Hmisc 有一个名为 lag 的函数,您可能在加载 dplyr 后加载了该库(或另一个具有 lag 函数的库)。