dplyr逗号(,)语法出现问题

时间:2018-09-10 14:20:57

标签: r dplyr

# 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)串在一起。

2 个答案:

答案 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))