在R中使用grepl的多个正则表达式

问题描述 投票:0回答:2
dat <- data.frame(tmax.p.start_d = rnorm(1),
                  tmin.p.start_d = rnorm(1),
                  rain.p.start_d = rnorm(1),

                  tmax.p.end_d = rnorm(1),
                  tmin.p.end_d = rnorm(1),
                  rain.p.end_d = rnorm(1))

我想删除tmaxstarttmin和'start'或[C0​​]和rain的所有列。因此,最终数据帧将仅具有starttmax.p.end_dtmin.p.end_d。以下命令仅适用于单个模式。是否可以在一个表达式中包含所有上述条件?

rain.p.end_d

dat

r regex grepl
2个回答
1
投票

如果我理解正确,则可以与 dat[, !grepl(pattern="tmax", colnames(dat))] dat[, !grepl(pattern="tmin", colnames(dat))] dat[, !grepl(pattern="rain", colnames(dat))] 结合使用,并在模式中使用&作为OR命令,例如


0
投票

您还可以将dplyr中的# not (start and (tmax or tmin or rain)) dat[, !(grepl(pattern="start", colnames(dat)) & grepl(pattern="tmax|tmin|rain", colnames(dat)))] select_at结合使用,以基于正则表达式选择/删除列。

© www.soinside.com 2019 - 2024. All rights reserved.