R语言中提取指定列(行)以外的所有列(行)

 

1、测试数据

> dat <- as.data.frame(matrix(1:100, nrow = 10))
> colnames(dat) <- 1:10
> rownames(dat) <- 1:10
> dat
    1  2  3  4  5  6  7  8  9  10
1   1 11 21 31 41 51 61 71 81  91
2   2 12 22 32 42 52 62 72 82  92
3   3 13 23 33 43 53 63 73 83  93
4   4 14 24 34 44 54 64 74 84  94
5   5 15 25 35 45 55 65 75 85  95
6   6 16 26 36 46 56 66 76 86  96
7   7 17 27 37 47 57 67 77 87  97
8   8 18 28 38 48 58 68 78 88  98
9   9 19 29 39 49 59 69 79 89  99
10 10 20 30 40 50 60 70 80 90 100

 

2、提取2, 5,6列以外的所有列

> dat
    1  2  3  4  5  6  7  8  9  10
1   1 11 21 31 41 51 61 71 81  91
2   2 12 22 32 42 52 62 72 82  92
3   3 13 23 33 43 53 63 73 83  93
4   4 14 24 34 44 54 64 74 84  94
5   5 15 25 35 45 55 65 75 85  95
6   6 16 26 36 46 56 66 76 86  96
7   7 17 27 37 47 57 67 77 87  97
8   8 18 28 38 48 58 68 78 88  98
9   9 19 29 39 49 59 69 79 89  99
10 10 20 30 40 50 60 70 80 90 100
> dat[,-c(2,5,6)]       ## 提取2,5,6列以外的所有列
    1  3  4  7  8  9  10
1   1 21 31 61 71 81  91
2   2 22 32 62 72 82  92
3   3 23 33 63 73 83  93
4   4 24 34 64 74 84  94
5   5 25 35 65 75 85  95
6   6 26 36 66 76 86  96
7   7 27 37 67 77 87  97
8   8 28 38 68 78 88  98
9   9 29 39 69 79 89  99
10 10 30 40 70 80 90 100

 

subset实现:

> dat
    1  2  3  4  5  6  7  8  9  10
1   1 11 21 31 41 51 61 71 81  91
2   2 12 22 32 42 52 62 72 82  92
3   3 13 23 33 43 53 63 73 83  93
4   4 14 24 34 44 54 64 74 84  94
5   5 15 25 35 45 55 65 75 85  95
6   6 16 26 36 46 56 66 76 86  96
7   7 17 27 37 47 57 67 77 87  97
8   8 18 28 38 48 58 68 78 88  98
9   9 19 29 39 49 59 69 79 89  99
10 10 20 30 40 50 60 70 80 90 100
> subset(dat, select = -c(1,5,6))   ## 提取1、5、6列以外的所有列
    2  3  4  7  8  9  10
1  11 21 31 61 71 81  91
2  12 22 32 62 72 82  92
3  13 23 33 63 73 83  93
4  14 24 34 64 74 84  94
5  15 25 35 65 75 85  95
6  16 26 36 66 76 86  96
7  17 27 37 67 77 87  97
8  18 28 38 68 78 88  98
9  19 29 39 69 79 89  99
10 20 30 40 70 80 90 100

 

3、提取1、5、6行以外的所有行

> dat
    1  2  3  4  5  6  7  8  9  10
1   1 11 21 31 41 51 61 71 81  91
2   2 12 22 32 42 52 62 72 82  92
3   3 13 23 33 43 53 63 73 83  93
4   4 14 24 34 44 54 64 74 84  94
5   5 15 25 35 45 55 65 75 85  95
6   6 16 26 36 46 56 66 76 86  96
7   7 17 27 37 47 57 67 77 87  97
8   8 18 28 38 48 58 68 78 88  98
9   9 19 29 39 49 59 69 79 89  99
10 10 20 30 40 50 60 70 80 90 100
> dat[-c(1,5,6),]         ## 提取1,5,6行以外的所有行
    1  2  3  4  5  6  7  8  9  10
2   2 12 22 32 42 52 62 72 82  92
3   3 13 23 33 43 53 63 73 83  93
4   4 14 24 34 44 54 64 74 84  94
7   7 17 27 37 47 57 67 77 87  97
8   8 18 28 38 48 58 68 78 88  98
9   9 19 29 39 49 59 69 79 89  99
10 10 20 30 40 50 60 70 80 90 100

 

posted @ 2022-04-29 21:47  小鲨鱼2018  阅读(3681)  评论(0编辑  收藏  举报