R:基于向量值从数据帧中删除多列

R:基于向量值从数据帧中删除多列,r,vector,R,Vector,我有一个数据框dataGL\u all: Date<-c("01-01-15 04:00","01-01-15 04:20","01-01-15 04:40") FLIin<-c(96,39,72) FLIout<-c(173,147,103) FBEin<-c(96,116,166) FBEout<-c(32,53,120) dataGL_all<-data.frame(Date, FLIin, FLIout, FBEin, FBEout) 日期 我们应该

我有一个数据框dataGL\u all:

Date<-c("01-01-15 04:00","01-01-15 04:20","01-01-15 04:40")
FLIin<-c(96,39,72)
FLIout<-c(173,147,103)
FBEin<-c(96,116,166)
FBEout<-c(32,53,120)
dataGL_all<-data.frame(Date, FLIin, FLIout, FBEin, FBEout)
日期
我们应该做到这一点。或者,如果您想要
grep

dataGL_all[, grep(paste(Remove, collapse = "|"), names(dataGL_all), invert = T)]

为了增加更多的可能性,使用
data.table
包,这些操作非常简单。您可以使用
临时删除列
与=FALSE的组合。或者,在使用
数据中的
()
计算此向量时,您可以通过引用修改数据集。表
环境并使用
:=
赋值运算符为其赋值
NULL
,因此:

加载包并转换为
data.table
class

library(data.table)
setDT(dataGL_all)
那你也可以

dataGL_all[, !Remove, with = FALSE]
#              Date FLIin FBEout
# 1: 01-01-15 04:00    96     32
# 2: 01-01-15 04:20    39     53
# 3: 01-01-15 04:40    72    120
或通过引用更新数据集

dataGL_all[, (Remove) := NULL][]
#              Date FLIin FBEout
# 1: 01-01-15 04:00    96     32
# 2: 01-01-15 04:20    39     53
# 3: 01-01-15 04:40    72    120

是的!蒂克斯卢卡。该网站告诉我,我必须等待5分钟才能接受你的答案。。。
dataGL_all[, !Remove, with = FALSE]
#              Date FLIin FBEout
# 1: 01-01-15 04:00    96     32
# 2: 01-01-15 04:20    39     53
# 3: 01-01-15 04:40    72    120
dataGL_all[, (Remove) := NULL][]
#              Date FLIin FBEout
# 1: 01-01-15 04:00    96     32
# 2: 01-01-15 04:20    39     53
# 3: 01-01-15 04:40    72    120