gpt4 book ai didi

r - dplyr::pull 与 purrr::pluck 和 magrittr::extract2 有何区别?

转载 作者:行者123 更新时间:2023-12-05 00:46:26 24 4
gpt4 key购买 nike

过去,当处理数据框并希望将单列作为向量时,我会使用 magrittr::extract2()像这样:

mtcars %>%
mutate(wt_to_hp = wt/hp) %>%
extract2('wt_to_hp')

但我已经看到了 dplyr::pull()purrr::pluck()也存在做很多相同的工作:从数据帧返回单个向量,与 [[ 不同。 .

假设我总是为我从事的任何项目加载所有 3 个库,那么这 3 个函数中的每一个的优点和用例是什么?或者更具体地说,它们有什么区别?

最佳答案

什么时候“应该”使用函数实际上是个人喜好问题。哪个功能最清楚地表达了您的意图。它们之间存在差异。例如,pluck当您想要进行多次提取时效果更好。从帮助文件:

 accessor(x[[1]])$foo 
# is the same as
pluck(x, 1, accessor, "foo")

因此,虽然它可用于仅提取一列,但当您具有更深的嵌套结构或想要使用访问器函数进行组合时,它很有用。
pull函数旨在与 dplyr 的结果混合功能。它可以使用包中其他函数的任何方式来获取列的名称。例如,它将与 !! 一起使用样式扩展哪里说 extract2将不会。
irispull <- function(x) {
iris %>% pull(!!enquo(x))
}
irispull(Sepal.Length)

extract2只不过是基本函数的“更具可读性”的包装器 [[ .实际上它被定义为 .Primitive("[[")所以它期望列名作为字符或列索引和整数。

关于r - dplyr::pull 与 purrr::pluck 和 magrittr::extract2 有何区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54113879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com