正如标题所说。我加载后pglm,lag停止正常工作。
library(pglm)
c(1,2,3,4) %>% lag()
Run Code Online (Sandbox Code Playgroud)
该对象被转换为时间序列,并且不再与 tibbles 兼容。
即使卸载pglm, 的依赖lag仍然有效。
一个解决方案可能是实际上从不加载pglm,但是如果我lag(x)在公式中有一个
pglm:pglm(
family= poisson,
y ~ lag(x),
model = "within", index="id",
data = db
)
Run Code Online (Sandbox Code Playgroud)
该算法无法收敛到估计值。由于某些原因,甚至强迫发生这种情况stats::lag(x)。有趣的是,相反,如果pglm已加载,则y ~ lag(x)可以正常工作y ~ stats:lag(x)。
这是唯一有效的情况,呵呵!我唯一想到的另一件事是外部公式dplyr::lag是冲突的罪魁祸首。
我不知道如何优化工作流程,您有建议吗?
dplyr 是这里的罪魁祸首。plm(由 pglm 使用)定义了一个由 stats 中的泛型调度的lag方法。其他软件包,例如 plm 等,提供通用方法;然而,dplyr 用它自己的非泛型破坏了泛型,因此所有使用的包都会失败。如果您需要与 pglm 一起加载 dplyr,则加载 dplyr 除外,如果您需要使用 dplyr 的use 。同上。lag.pserieslaglaglaglaglaglagdplyr::lagfilter
library(dplyr, exclude = c("filter", "lag"))
Run Code Online (Sandbox Code Playgroud)