# Code chunk 1
library(tidyverse)
df <- tibble(a = c(NA, 1, 2), b = c(5, 5, 5))
请在上方创建数据框。如果然后运行此代码块2
# Code chunk 2
df %>%
mutate(
c = abs(lag(a, 1) - a),
d = sum(.$c, na.rm = TRUE) / (length(.$c) - 1)
)
您收到此错误“未知或未初始化的列:'c'。” 。但是我可以运行相同的代码,但排列不同,并得到我想要的(没有错误,输出正确)。
# Code chunk 3
df %>%
mutate(c = abs(lag(a, 1) - a)) %>%
mutate(d = sum(.$c, na.rm = TRUE) / (length(.$c) - 1))
第二个代码块为什么不起作用?当简单的mutate(x) %>% mutate(y) %>% mutate(z) %>% etc.
比较整洁时,我不想将一系列mutate(x, y, z)
串在一起。
答案 0 :(得分:4)
工作正常。您需要修改一些代码。
df %>%
mutate(
c = abs(lag(a, 1) - a),
d = sum(c, na.rm = TRUE) / (length(c) - 1)
)
将.$c
更改为c
答案 1 :(得分:1)
我们也可以
df %>%
mutate(c = abs(lag(a) - a),
d = sum(c, na.rm = TRUE)/(n() - 1))