我猜它与该故事相关: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
这只是stats
和dplyr
套餐之间的冲突吗?
答案 0 :(得分:0)
我可以确认df %>% mutate(lag_cyl = lag(cyl, default = cyl[1]))
在dplyr 0.8.0.1版中可以正常工作。
如果在指定dplyr::lag
时有效,则表明另一个库正在屏蔽该函数。 Hmisc具有一个称为lag的函数,您可能在加载dplyr之后已加载了该库(或另一个具有lag函数的库)。