select 列的模式在 data.table 中

select columns with patterns in data.table

我有一个数据 table,其中包含许多列,例如 real_0_hreal_1_hreal_2_h 等等。不幸的是,我还有其他列,例如 real_dose.

我的代码看起来像那样(data.table 包):

melt(dt, id.vars = c("id", "dose"), measure.vars = patterns("^real_"))

这样,显然 real_dose 也会被选中,但我只想参考 real_0_h:real_24_h (dplyr 语法)。它是怎么做到的?

patterns 接受标准正则表达式。
您可以使用以下模式 select 只有 real_

之后的数字
melt(dt, id.vars = c("id", "dose"), measure.vars = patterns("^real_[0-9]"))

在没有可重现示例的情况下,可以使用 grepl:

测试此模式
grepl('^real_[0-9]',c('real_dose','real_0_h','real_24_h'))
[1] FALSE  TRUE  TRUE