在 R 中使用 grepl 的多个正则表达式
mutiple regular expression using grepl in R
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))
我想删除 tmax
和 start
OR tmin
和 'start' OR rain
和 start
的所有列。所以最终的数据框将只有 tmax.p.end_d
、tmin.p.end_d
和 rain.p.end_d
。以下命令仅适用于单个模式。是否可以将上述所有条件包含在一个表达式中
dat[, !grepl(pattern="tmax", colnames(dat))]
dat[, !grepl(pattern="tmin", colnames(dat))]
dat[, !grepl(pattern="rain", colnames(dat))]
如果我没理解错,您可以结合 &
并在模式中使用 |
作为 OR 命令,例如
# not (start and (tmax or tmin or rain))
dat[, !(grepl(pattern="start", colnames(dat)) &
grepl(pattern="tmax|tmin|rain", colnames(dat)))]
您还可以根据正则表达式将 select_at
与 matches
从 dplyr 到 select/drop 列一起使用。
library(dplyr)
dat %>%
select_at(vars(-matches('start', 'tmin|tmax|rain')))
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))
我想删除 tmax
和 start
OR tmin
和 'start' OR rain
和 start
的所有列。所以最终的数据框将只有 tmax.p.end_d
、tmin.p.end_d
和 rain.p.end_d
。以下命令仅适用于单个模式。是否可以将上述所有条件包含在一个表达式中
dat[, !grepl(pattern="tmax", colnames(dat))]
dat[, !grepl(pattern="tmin", colnames(dat))]
dat[, !grepl(pattern="rain", colnames(dat))]
如果我没理解错,您可以结合 &
并在模式中使用 |
作为 OR 命令,例如
# not (start and (tmax or tmin or rain))
dat[, !(grepl(pattern="start", colnames(dat)) &
grepl(pattern="tmax|tmin|rain", colnames(dat)))]
您还可以根据正则表达式将 select_at
与 matches
从 dplyr 到 select/drop 列一起使用。
library(dplyr)
dat %>%
select_at(vars(-matches('start', 'tmin|tmax|rain')))