嗨我经常发现自己在.fists = FALSE
中使用purrr:partial
参数。所以今天我决定不再重复自己了,我试着写一部分partial
本身:
backwards_partial <- partial(partial,.first = FALSE)
这个功能让我很紧张,因为它如何使用.first = FALSE
模棱两可:
我认为我可以通过写这个来弥补这种模糊性:
backwards_partial <- lift_ld(lift_dl(partial),list(.first = FALSE))
但这失败了,看起来并不优雅。
所以我的问题是...... 我在这里缺少一种正确的方法(最佳实践,社区标准)吗? 如果是这样的话是什么? 否则你怎么解决这个问题?
编辑:
我应该提一下我使用backwards_partial
的用例。
我希望预先填充多个函数的参数,我将传递给compose
,它将过去函数的结果传递给第一个参数,因此.fists = FALSE
确保我们不会覆盖预先填充的参数。
这是一种方式:
# copy function
backwards_partial <- purrr::partial
# change formals
formals(backwards_partial)[5] <- alist(.first = FALSE)
我们来测试一下:
partial(head,2)(1:5)
# Error in head.default(2, ...) : length(n) == 1L is not TRUE
partial(head,2,.first = FALSE)(1:5)
# [1] 1 2
backwards_partial(head,2)(1:5)
# [1] 1 2