regex - 根据正则表达式选择data.table的列

标签 regex r data.table

如何基于正则表达式选择data.table的列?
考虑一个简单的示例,如下所示:

library(data.table)
mydt <- data.table(foo=c(1,2), bar=c(2,3), baz=c(3,4))

有没有一种方法可以基于正则表达式使用数据表中的barbaz列?我知道以下解决方案有效,但是如果表更大,并且我想选择更多变量,则很容易变得麻烦。

mydt[, .(bar, baz)]

我想在matches()中有类似dplyr::select()的内容,但仅供引用。

最佳答案

您也可以尝试使用%like%包中的data.table,这是“调用regexpr的便捷功能”。但是使代码更具可读性;)

在这种情况下,回答您的问题:

mydt[, .SD, .SDcols = names(mydt) %like% "bar|baz"]

由于%like%返回逻辑 vector ,因此可以使用以下命令获取除包含“foo”的列以外的所有列:
mydt[, .SD, .SDcols = ! names(mydt) %like% "foo"]
!否定逻辑 vector 。

关于regex - 根据正则表达式选择data.table的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189979/

相关文章:

java - 在线工具上的正则表达式匹配在末尾有特殊字符时在 Java 中不匹配

正则表达式直到但不包括

r - 如何在 R 中拆分 'CHR' 列?

r - 从字符串中提取子字符串,以及字符串的其余部分

函数参数的 R 评估

r - 动态子集数据表

r - 为什么 grepl 不在 grepl (".*", LETTERS, fixed=T) 中返回 true?

python - 如何从正则表达式匹配中获取索引?

r - 使用 R-markdown knitr hooks 自定义 HTML 报告中的表格格式

r - 如何使用两个不同的标准对 data.table 执行两次聚合函数