我正在尝试where在我自己的 R 包中使用。我打算在代码中使用它,tidyselect::where()但该函数未导出。出于同样的原因,您不能使用@importFrom tidyselect where.
我不想用:::. 如果我简单地将其称为where(),则该代码将起作用,但随后我在支票中收到了一条注释。
未定义的全局函数或变量:其中
这里发生了什么?我假设该函数按原样工作,因为它在我的代码中捕获为表达式,而 tidyeval 知道如何在评估时处理它?
例子
例如,如果您启动一个干净的 R 会话,以下将工作(dplyr 1.0.0)而无需运行library(dplyr). 它清楚地知道如何处理where。
dplyr::mutate(iris, dplyr::across(where(is.numeric), ~.x + 10))
Run Code Online (Sandbox Code Playgroud)
同样,这也可以,但我不想在包中使用它。所以我使用上面的,它被标记为devtools::check().
dplyr::mutate(iris, dplyr::across(tidyselect:::where(is.numeric), ~.x + 10))
Run Code Online (Sandbox Code Playgroud)
题
如何在包中使用wherefromtidyselect而不将其标记为未定义?
我有一个包含数字的因子列。一些数字以 k 格式书写,例如。99k, 9.25k, 91.9k 等,而其他人则像 998、575 等一样完整地编写。我想做的两件事-:
如果我首先将其转换为数字应用 as.numeric,k 格式数字将成为 NAs。
我想不出什么来解决这个问题。任何人都可以帮助我解决 r 问题吗?
以下是样本数据
df=data.frame(
ID = c(1:8),
Likes = c('99k', '997','15.5k', '9.25k','575', '800', '8.5k', '2,400')
)
Run Code Online (Sandbox Code Playgroud)
编辑我仍然不知道是什么问题。在尝试了此处提供的所有解决方案后,仍然生成了 NA。我正在提供完整数据的链接。请通过它并帮助我找到问题。我关心的专栏是“喜欢”。
https://drive.google.com/file/d/1tR0F4SwGmsVjh5NGGpONP6LTaqgDOM4l/view?usp=sharing