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

时间:2015-11-04 12:45:29

标签: r dplyr lag

我猜它与该故事相关:Changing behaviour of stats::lag when loading dplyr package,但是当我尝试使用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

这只是statsdplyr套餐之间的冲突吗?

1 个答案:

答案 0 :(得分:0)

我可以确认df %>% mutate(lag_cyl = lag(cyl, default = cyl[1]))在dplyr 0.8.0.1版中可以正常工作。

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