如何基于正则表达式选择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/

10-12 17:31
查看更多