如何基于正则表达式选择data.table的列?
考虑一个简单的例子如下:
库(data.table)
mydt<;-数据表(foo=c(1,2),bar=c(2,3),baz=c(3,4))
是否有一种方法可以基于正则表达式使用数据表中的bar
和baz
列?我知道下面的解决方案是可行的,但如果表大得多,我想选择更多的变量,这很容易变得麻烦
mydt[,(bar,baz)]
我希望在dplyr::select()
中有类似matches()
的内容,但只能通过引用
您还可以尝试使用%like%
fromdata.table
包,这是一个“调用regexpr的方便函数”。但是,这会使代码更具可读性;)
在这种情况下,回答您的问题:
mydt[,.SD,.SDcols=名称(mydt)%like%“bar | baz”]
由于%like%
返回一个逻辑向量,因此除了包含“foo”的列外,我们可以使用以下内容获取每一列:
mydt[,.SD,.SDcols=!名称(mydt)%like%“foo”]
其中对逻辑向量求反