如何将一个对象管道传递到apply
调用中的特定位置而不是第一个输入? magrittr
的占位符似乎无法解决这个问题。
dat <- 1:10
locs <- list(c(1, 2),
c(3, 4),
c(5, 6))
foo <- function(x, y, z) {
out <- mean(c(x[y], x[z]))
return(out)
}
# works
lapply(locs, function(z) foo(dat, z[1], z[2]))
# none of these work
dat %>%
lapply(locs, function(z) foo(., z[1], z[2]))
dat %>%
lapply(locs, function(z) foo((.), z[1], z[2]))
dat %>%
lapply(locs, function(z) {. %>% foo(z[1], z[2])})
# New native pipe and placeholder also do not work
dat |>
lapply(locs, function(z) foo(_, z[1], z[2]))