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
或tmin
和'start'或[C0]和rain
的所有列。因此,最终数据帧将仅具有start
,tmax.p.end_d
和tmin.p.end_d
。以下命令仅适用于单个模式。是否可以在一个表达式中包含所有上述条件?
rain.p.end_d
dat
如果我理解正确,则可以与 dat[, !grepl(pattern="tmax", colnames(dat))]
dat[, !grepl(pattern="tmin", colnames(dat))]
dat[, !grepl(pattern="rain", colnames(dat))]
结合使用,并在模式中使用&
作为OR命令,例如
您还可以将dplyr中的# not (start and (tmax or tmin or rain))
dat[, !(grepl(pattern="start", colnames(dat)) &
grepl(pattern="tmax|tmin|rain", colnames(dat)))]
与select_at
结合使用,以基于正则表达式选择/删除列。