在省略号前使用“非”运算符

时间:2021-01-12 16:01:31

标签: r tidyverse

我正在尝试在省略号 ! 之前使用 ... 逻辑运算符创建一个函数。

下面是一个简单的例子:

library(tidyverse)

myfun <- function(data, ...) {
  filter(data, !(...))
}

该函数不起作用并抛出以下错误:

> myfun(iris, Sepal.Width < 4)
Error: Problem with `filter()` input `..1`.
x object 'Sepal.Width' not found
ℹ Input `..1` is `!(...)`.

我怎样才能让它发挥作用?

请注意,为了我的目的,我必须否定 myfun 内的条件。

3 个答案:

答案 0 :(得分:4)

这是 [12-Jan-2021 20:59:17 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlsrv' (tried: C:\php\ext\pdo_sqlsrv (Impossível localizar o módulo especificado), C:\php\ext\php_pdo_sqlsrv.dll (Impossível localizar o módulo especificado)) in Unknown on line 0 方法:

rlang

答案 1 :(得分:2)

更好的选择可能是像往常一样简单地过滤,然后从原始数据集中删除过滤后的行 - 例如使用 class CourseEpisodeSection extends Model { protected $fillable = [ 'id', 'course_episode_id', 'order', 'type', 'content' ]; protected $hidden = [ 'deleted_at', 'updated_at', 'deleted_at' ]; public function courseEpisode() { return $this->belongsTo(CourseEpisode::class); } 如下:

anti_join()

答案 2 :(得分:0)

尝试执行以下操作。

library(tidyverse)
library(data.table)

myfun <- function(data, param, argument) {
  filter(data, data[[param]] != argument)
}

iris1 = as.data.table(iris)
myfun(iris, param = "Species", argument = "setosa")