首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在自定义包中使用tidyselect "where“?

如何在自定义包中使用tidyselect "where“?
EN

Stack Overflow用户
提问于 2020-06-18 21:32:13
回答 1查看 1.2K关注 0票数 16

我试图在我自己的R包中使用where。我本来打算在代码中使用它作为tidyselect::where(),但是函数没有导出。出于同样的原因,您不能使用@importFrom tidyselect where

我不想用:::来引用它。如果我简单地将它称为where(),那么代码就可以工作了,但是在支票中我会收到一条便条。

未定义的全局函数或变量:

这里发生什么事情?我假设这个函数的工作方式是这样的,因为它在我的代码中捕获了表达式,而tidyeval知道如何在计算中处理它?

示例

例如,如果您启动一个干净的R会话,以下内容将在不运行library(dplyr)的情况下工作(dplyr 1.0.0)。它清楚地知道如何处理where

代码语言:javascript
复制
dplyr::mutate(iris, dplyr::across(where(is.numeric), ~.x + 10))

同样,这也会起作用,但我不想在包中使用它。所以我使用上面的内容,它在devtools::check()中被标记。

代码语言:javascript
复制
dplyr::mutate(iris, dplyr::across(tidyselect:::where(is.numeric), ~.x + 10))

问题

如何在不将where标记为未定义的情况下使用包中的tidyselect

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 22:12:48

对于这种类型的问题,有一个现有的解决办法。从tidyselect导出的项目之一是一个名为vars_select_helpers的助手函数列表。这包括where,所以如果您这样做了

代码语言:javascript
复制
mutate(iris, dplyr::across(tidyselect::vars_select_helpers$where(is.numeric), ~.x + 10))

您应该获得相同的功能,而不抱怨检查工具。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62459736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档