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