r - data.table 等效于 dplyr::%in% 使用 ! (非)运算符
问题描述
R 中的 data.table 包语法中是否有以下代码的等效版本?
以下代码行在 mtcars 数据集中过滤不包含集合中 cyl 值的行 (4,6)
在 dplyr 中,此代码如下所示:
mtcars %>% filter(!(cyl %in% c(4,6)))
data.table 中是否有等效的语法来执行嵌套的 %in% 操作!不是运算符来过滤表中的行?
您可以通过以下代码运行示例:
library(tidyverse)
mtcars %>% filter(!(cyl %in% c(4,6)))
解决方案
像这样?下面是如何对data.table
. 与您的dplyr
代码相比,该部分!(cyl %in% c(4,6))
与您的原始代码完全相同。所以在这种情况下,您唯一需要学习的dt[..code.., ]
是与 等价的df %>% filter(..code..)
,其中..code..
是用于评估每一行条件的逻辑语句。
library(data.table)
dat <- mtcars
setDT(dat)[!(cyl %in% c(4,6)), ]
# mpg cyl disp hp drat wt qsec vs am gear carb
# 1: 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
# 2: 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
# 3: 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
# 4: 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
# 5: 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
# 6: 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
# 7: 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
# 8: 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
# 9: 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
# 10: 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
# 11: 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
# 12: 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
# 13: 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
# 14: 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
推荐阅读
- c# - 如何禁用预制件中某些对象的脚本?
- angular - 生成预填充的电子邮件和 Windows 字符限制
- node.js - 查询嵌套 mongdb 文档的属性
- c++ - 在 c++ 中使用模板在核心类型不同的不同项目中使用通用代码
- javascript - 变量问题
- apache - 重定向除根域之外的所有目录
- reactjs - 在 Const 中 React Redux Dispatch Action
- javascript - 如何将我的 json 数据转换为字符串数组并显示文本?
- ionic3 - Is there a way to pass parameters when visiting a page using "cy.visit" like when using "navCtrl.push('testpage', params)"?
- openseadragon - Angular 7 中的 OpenSeadragon