Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我在管道步骤中使用嵌套函数时,执行顺序似乎不直观。
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(.))}
.
colSums
is.na(.)
na.rm
df %>% colSums(x = ., na.rm = is.na(.))
{}
df %>% {colSums(is.na(.))}