1、subset实现

> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat                          ## 测试数据框,共四列
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> subset(dat, select = -c)    ## 删除单列, c列
  a b d
1 1 5 A
2 2 6 B
3 3 7 C
4 4 8 D
> dat
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> subset(dat, select = -c(b, d))    ## 同时删除多列,删除b、d列
  a c
1 1 a
2 2 b
3 3 c
4 4 d

 

2、%in% in实现

> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat                            ## 测试数据框
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[, !names(dat) %in% "b"]    ## 删除单列b
  a c d
1 1 a A
2 2 b B
3 3 c C
4 4 d D
> dat
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[,!names(dat) %in% c("a", "c")]   ## 同时删除多列a、c
  b d
1 5 A
2 6 B
3 7 C
4 8 D

 

 3、grep实现

> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat                                  ## 测试数据框
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[, -grep("b", names(dat))]        ## 删除单列b
  a c d
1 1 a A
2 2 b B
3 3 c C
4 4 d D
> dat
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[, -grep("a|c", names(dat))]     ## 删除多列a、c
  b d
1 5 A
2 6 B
3 7 C
4 8 D

 

 4、grepl实现

> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat                                       ## 测试数据框
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[,!grepl("b", colnames(dat))]         ## 删除单列b
  a c d
1 1 a A
2 2 b B
3 3 c C
4 4 d D
> dat[,!grepl("b|d", colnames(dat))]       ## 删除多列b、d
  a c
1 1 a
2 2 b
3 3 c
4 4 d

 

5、dplyr包实现

> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat   
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> library(dplyr)
> select(dat, -b)               ## 删除单列b
  a c d
1 1 a A
2 2 b B
3 3 c C
4 4 d D
> dat
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> select(dat, -c(a,c))         ## 删除多列a、c
  b d
1 5 A
2 6 B
3 7 C
4 8 D