当我在管道步骤中使用嵌套函数时,执行顺序似乎不直观.
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
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么第三行中的嵌套函数不能产生正确的结果?
bri*_*enb 16
这是因为.始终作为第一个参数传递给以下函数.因此,在您的第二次尝试中colSums,您假设您is.na(.)作为第一个参数传递colSums,但您实际上将它作为第二个传递,这是na.rm参数.那么你的代码实际上是什么样的df %>% colSums(x = ., na.rm = is.na(.)).您可以.通过使用{}函数来阻止作为第一个参数传递.df %>% {colSums(is.na(.))}