小编Ada*_*dam的帖子

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

我正在尝试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而不将其标记为未定义?

r dplyr

8
推荐指数
1
解决办法
616
查看次数

将带有k格式数字的因子列转换为数字而不丢失任何数据

我有一个包含数字的因子列。一些数字以 k 格式书写,例如。99k, 9.25k, 91.9k 等,而其他人则像 998、575 等一样完整地编写。我想做的两件事-:

  • 我想将具有 k 的数字乘以 1000 并删除 k。
  • 我想将此列转换为数字列而不丢失任何数据。

如果我首先将其转换为数字应用 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

r

2
推荐指数
1
解决办法
121
查看次数

标签 统计

r ×2

dplyr ×1