r语言 - dplyr管道中嵌套函数的执行顺序



当我在管道步骤中使用嵌套函数时,执行顺序似乎不直观。

df <- data.frame(a = c(1,NA,2), b = c(NA, NA, 1))
df %>% is.na %>% colSums # Produce correct count of missing values
df %>% colSums(is.na(.)) # Produce NA

谁能解释为什么第三行中的嵌套函数没有产生正确的结果?

这是因为

.总是作为第一个参数传递给下一个函数。所以在你第二次尝试colSums时,你假设你把is.na(.)作为第一个参数传递给colSums,但你实际上是把它作为第二个参数传递的,这是na.rm参数。所以你的代码实际看起来像是df %>% colSums(x = ., na.rm = is.na(.)) .可以通过在函数周围使用{}来防止将.作为第一个参数传递。 df %>% {colSums(is.na(.))}

相关内容

  • 没有找到相关文章

最新更新