gpt4 book ai didi

r - 如何在自定义包中使用 tidyselect "where"?

转载 作者:行者123 更新时间:2023-12-03 16:45:04 28 4
gpt4 key购买 nike

我正在尝试使用 where在我自己的 R 包中。我打算在代码中使用它作为 tidyselect::where()但该功能未导出。出于同样的原因,您不能使用 @importFrom tidyselect where .

我不想用 ::: 引用它.如果我简单地将其称为 where(),该代码将起作用,但后来我在支票上收到了一张便条。

Undefined global functions or variables: where



这里发生了什么?我假设该函数按原样工作,因为它在我的代码中捕获为表达式,而 tidyeval 知道如何在评估时处理它?

示例

例如,如果您启动一个干净的 R session ,以下内容将起作用(dplyr 1.0.0)而无需运行 library(dplyr) .它清楚知道如何处理 where .
dplyr::mutate(iris, dplyr::across(where(is.numeric), ~.x + 10))

同样,这也可以,但我不想在包中使用它。所以我使用上面的,它被标记为 devtools::check() .
dplyr::mutate(iris, dplyr::across(tidyselect:::where(is.numeric), ~.x + 10))

问题

我如何使用 where来自 tidyselect在没有被标记为未定义的包中?

最佳答案

有针对此类问题的现有解决方法。从 tidyselect 导出的项目之一是一个名为 vars_select_helpers 的辅助函数列表.这包括 where ,所以如果你这样做

mutate(iris, dplyr::across(tidyselect::vars_select_helpers$where(is.numeric), ~.x + 10))

您应该获得相同的功能,而不会对检查工具产生任何提示。

关于r - 如何在自定义包中使用 tidyselect "where"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62459736/

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